|
@@ -4,10 +4,9 @@ from django.http import Http404
|
|
|
from django.shortcuts import render, redirect
|
|
|
from django.views.generic import View
|
|
|
from django.contrib import messages
|
|
|
-from user.forms import StaffRegistrationForm, StaffSheetDateForm
|
|
|
+from user.forms import StaffRegistrationForm, StaffSheetDateForm, GoogleReviewsFilter, FacebookReviewsFilter
|
|
|
from review.models import Review
|
|
|
from facebook_app.models import FacebookReview
|
|
|
-from yelp.models import YelpReview
|
|
|
from name_extractor.models import Staff
|
|
|
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
|
|
from django.shortcuts import get_object_or_404
|
|
@@ -22,7 +21,6 @@ from user.utils import (
|
|
|
)
|
|
|
from .forms import ImportStaffSpreadSheet
|
|
|
|
|
|
-
|
|
|
LOC_SYN = {
|
|
|
'cypress-1960': 'cypress',
|
|
|
'collegestation': 'college station'
|
|
@@ -102,16 +100,52 @@ class LocationAnalytics(LoginRequiredMixin, View):
|
|
|
|
|
|
class ReviewListLocationWise(View):
|
|
|
def get(self, request, platform, location_id, *args, **kwargs):
|
|
|
- rating = request.GET.get('rating')
|
|
|
location = Location.objects.get(pk=location_id)
|
|
|
if platform == 'google':
|
|
|
+ form = GoogleReviewsFilter()
|
|
|
+ reviews = Review.objects.filter(location_id=location_id).order_by('-update_time')
|
|
|
+ elif platform == 'facebook':
|
|
|
+ form = FacebookReviewsFilter()
|
|
|
+ reviews = FacebookReview.objects.filter(page__location_id=location_id).order_by('-create_time')
|
|
|
+ else:
|
|
|
+ raise Http404()
|
|
|
+
|
|
|
+ page = request.GET.get('page', 1)
|
|
|
+ paginator = Paginator(reviews, 50)
|
|
|
+ try:
|
|
|
+ reviews = paginator.page(page)
|
|
|
+ except PageNotAnInteger:
|
|
|
+ reviews = paginator.page(1)
|
|
|
+ except EmptyPage:
|
|
|
+ reviews = paginator.page(paginator.num_pages)
|
|
|
+ context = {'reviews': reviews, 'platform': platform, 'location': location, 'form': form}
|
|
|
+ return render(request, 'review-list-man.html', context=context)
|
|
|
+
|
|
|
+ def post(self, request, platform, location_id, *args, **kwargs):
|
|
|
+ location = Location.objects.get(pk=location_id)
|
|
|
+ if platform == 'google':
|
|
|
+ form = GoogleReviewsFilter(data=request.POST)
|
|
|
+ start_date = date_str2datetime(request.POST.get('start_date'))
|
|
|
+ end_date = date_str2datetime(request.POST.get('end_date'))
|
|
|
+ star_rating = int(request.POST.get('star_ratings'))
|
|
|
reviews = Review.objects.filter(location_id=location_id).order_by('-update_time')
|
|
|
- if rating:
|
|
|
- reviews = reviews.filter(star_rating=rating)
|
|
|
+ if start_date and end_date:
|
|
|
+ if star_rating > 5:
|
|
|
+ reviews = reviews.filter(create_time__range=(start_date, end_date))
|
|
|
+ else:
|
|
|
+ reviews = reviews.filter(create_time__range=(start_date, end_date), star_rating=star_rating)
|
|
|
elif platform == 'facebook':
|
|
|
+ form = FacebookReviewsFilter(request.POST)
|
|
|
+ start_date = date_str2datetime(request.POST.get('start_date'))
|
|
|
+ end_date = date_str2datetime(request.POST.get('end_date'))
|
|
|
+ star_rating = int(request.POST.get('star_ratings'))
|
|
|
+
|
|
|
reviews = FacebookReview.objects.filter(page__location_id=location_id).order_by('-create_time')
|
|
|
- if rating:
|
|
|
- reviews = reviews.filter(recommendation_type=rating)
|
|
|
+ if start_date and end_date:
|
|
|
+ if star_rating > 5:
|
|
|
+ reviews = reviews.filter(create_time__range=(start_date, end_date))
|
|
|
+ else:
|
|
|
+ reviews = reviews.filter(create_time__range=(start_date, end_date), recommendation_type=bool(star_rating))
|
|
|
else:
|
|
|
raise Http404()
|
|
|
|
|
@@ -123,7 +157,7 @@ class ReviewListLocationWise(View):
|
|
|
reviews = paginator.page(1)
|
|
|
except EmptyPage:
|
|
|
reviews = paginator.page(paginator.num_pages)
|
|
|
- context = {'reviews': reviews, 'platform': platform, 'location': location}
|
|
|
+ context = {'reviews': reviews, 'platform': platform, 'location': location, 'form': form}
|
|
|
return render(request, 'review-list-man.html', context=context)
|
|
|
|
|
|
|