|
@@ -6,10 +6,13 @@ from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
|
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
|
|
from django.utils import timezone
|
|
|
|
|
|
+from nlu_job.nlu_utils import model_inference, analyze_model_inference, clean_text
|
|
|
+
|
|
|
from .models import FacebookReview, FacebookReviewReply
|
|
|
from .forms import ReplyForm
|
|
|
-
|
|
|
+from review.models import CustomReply
|
|
|
from .review_utils import reply2facebook_review
|
|
|
+from nlu_job.nlu_utils import filter_with_last_ten_reviews
|
|
|
|
|
|
|
|
|
class FacebookReviews(LoginRequiredMixin, View):
|
|
@@ -24,7 +27,7 @@ class FacebookReviews(LoginRequiredMixin, View):
|
|
|
reply2facebook_review(
|
|
|
review_id=review_id,
|
|
|
reply=replied_text,
|
|
|
- love=True
|
|
|
+ like=True
|
|
|
)
|
|
|
|
|
|
FacebookReviewReply.objects.create(
|
|
@@ -56,3 +59,43 @@ class FacebookReviews(LoginRequiredMixin, View):
|
|
|
reviews = paginator.page(paginator.num_pages)
|
|
|
context = {'reviews': reviews, 'form': form}
|
|
|
return render(request, 'facebook-reviews.html', context=context)
|
|
|
+
|
|
|
+
|
|
|
+class FacebookReviewPrediction(View):
|
|
|
+
|
|
|
+ def get(self, request, id, *args, **kwargs):
|
|
|
+ review = FacebookReview.objects.get(pk=id)
|
|
|
+ review_text = clean_text(review.review_text)
|
|
|
+ res = model_inference(review_text)
|
|
|
+ intents = analyze_model_inference(res)
|
|
|
+ replies = {}
|
|
|
+ for intent in intents.keys():
|
|
|
+ r = CustomReply.objects.filter(reply_category=intent)
|
|
|
+ filtered_replies = filter_with_last_ten_reviews(review.page.location_id, r)
|
|
|
+ replies[intent] = filtered_replies
|
|
|
+
|
|
|
+ now = timezone.now()
|
|
|
+ form = ReplyForm()
|
|
|
+ date = now - timezone.timedelta(days=15)
|
|
|
+
|
|
|
+ reviews = FacebookReview.objects.filter(
|
|
|
+ facebookreviewreply=None,
|
|
|
+ create_time__gte=date
|
|
|
+ ).order_by('create_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, 'facebook-reviews.html', context=context)
|