views.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from django.shortcuts import render
  2. from django.utils import timezone
  3. from django.shortcuts import redirect
  4. from review.forms import ReplyForm
  5. from review.models import Review, CustomReply
  6. from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
  7. from .nlu_utils import model_inference, analyze_inference, filter_with_last_ten_reviews
  8. def predict_report(request, review_id):
  9. review = Review.objects.filter(review_id=review_id).first()
  10. if review is None:
  11. return redirect('un-replied-review')
  12. location_id = review.location.location_id
  13. text = review.comment.lower()
  14. res = model_inference(text=text)
  15. intents = analyze_inference(res)
  16. now = timezone.now()
  17. form = ReplyForm()
  18. date = now - timezone.timedelta(days=30)
  19. reviews = Review.objects.filter(reply=None, update_time__gte=date)\
  20. .exclude(comment=None, star_rating=5).order_by('update_time')
  21. page = request.GET.get('page', 1)
  22. paginator = Paginator(reviews, 15)
  23. try:
  24. reviews = paginator.page(page)
  25. except PageNotAnInteger:
  26. reviews = paginator.page(1)
  27. except EmptyPage:
  28. reviews = paginator.page(paginator.num_pages)
  29. replies = {}
  30. for intent in intents.keys():
  31. r = CustomReply.objects.filter(reply_category=intent)
  32. filtered_replies = filter_with_last_ten_reviews(location_id, r)
  33. replies[intent] = filtered_replies
  34. context = {
  35. 'reviews': reviews,
  36. 'form': form,
  37. 'intents': intents,
  38. 'replies': replies
  39. }
  40. return render(request, 'dashboard.html', context)