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 difflib import SequenceMatcher from .nlu_utils import model_inference, analyze_inference def filter_with_last_ten_reviews(location_id, replies): replies = list(replies) revs = Review.objects.filter(location_id=location_id).exclude(reply=None).order_by('-update_time')[:12] for r in revs: s1 = r.reply.replied_text for rep in replies: s2 = rep.reply similarity = SequenceMatcher(None, s1, s2).ratio() if similarity > 0.7: replies.remove(rep) print(similarity, '--------------', rep.reply_category) return replies 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).order_by('-update_time') 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)