from django.shortcuts import render from django.utils import timezone from django.shortcuts import redirect from review.forms import ReplyForm from review.models import Review, CustomReply from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from .nlu_utils import model_inference, analyze_inference, filter_with_last_ten_reviews def predict_report(request, review_id): review = Review.objects.filter(review_id=review_id).first() if review is None: return redirect('un-replied-review') location_id = review.location.location_id text = review.comment.lower() res = model_inference(text=text) intents = analyze_inference(res) now = timezone.now() form = ReplyForm() date = now - timezone.timedelta(days=30) reviews = Review.objects.filter(reply=None, update_time__gte=date)\ .exclude(comment=None, star_rating=5).order_by('update_time') page = request.GET.get('page', 1) paginator = Paginator(reviews, 15) try: reviews = paginator.page(page) except PageNotAnInteger: reviews = paginator.page(1) except EmptyPage: reviews = paginator.page(paginator.num_pages) replies = {} for intent in intents.keys(): r = CustomReply.objects.filter(reply_category=intent) filtered_replies = filter_with_last_ten_reviews(location_id, r) replies[intent] = filtered_replies context = { 'reviews': reviews, 'form': form, 'intents': intents, 'replies': replies } return render(request, 'dashboard.html', context)