123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- 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 django.contrib.auth.decorators import login_required
- from .nlu_utils import (
- model_inference,
- analyze_model_inference,
- filter_with_last_ten_reviews
- )
- @login_required
- def predict_report(request, review_id):
- review = Review.objects.get(review_id=review_id)
- location_id = review.location_id
- replies = {}
- if review.star_rating == 5:
- text = review.comment.lower()
- res = model_inference(text=text)
- intents = analyze_model_inference(res)
- 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
- elif review.star_rating == 4:
- intents = {'four_star': 100}
- cr = CustomReply.objects.filter(reply_star=4)
- filtered_replies = filter_with_last_ten_reviews(location_id, cr)
- replies = {'four_star': filtered_replies}
- elif review.star_rating == 3:
- intents = {'three_star': 100}
- cr = CustomReply.objects.filter(reply_star=3)
- filtered_replies = filter_with_last_ten_reviews(location_id, cr)
- replies = {'three_star': filtered_replies}
- else:
- intents = {'negative': 100}
- cr = CustomReply.objects.filter(reply_star__lte=2)
- filtered_replies = filter_with_last_ten_reviews(location_id, cr)
- replies = {'negative': filtered_replies}
- now = timezone.now()
- form = ReplyForm()
- date = now - timezone.timedelta(days=30)
- hours = now - timezone.timedelta(hours=6)
- reviews = Review.objects.filter(reply=None, update_time__gte=date)\
- .exclude(comment=None, star_rating=5)\
- .exclude(star_rating__lte=3, update_time__gte=hours)\
- .order_by('update_time')
- page = request.GET.get('page', 1)
- paginator = Paginator(reviews, 10)
- try:
- reviews = paginator.page(page)
- except PageNotAnInteger:
- reviews = paginator.page(1)
- except EmptyPage:
- reviews = paginator.page(paginator.num_pages)
- context = {
- 'reviews': reviews,
- 'form': form,
- 'intents': intents,
- 'replies': replies,
- }
- return render(request, 'dashboard.html', context)
|