123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- from django.utils import timezone
- from django.shortcuts import render, redirect
- from django.contrib import messages
- from django.views.generic import View
- from review.models import Review, Reply
- from review.forms import ReplyForm
- from gauth.models import Location
- from review.review_utils import sync_all_review, reply_review
- from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
- class ReviewListByLocationView(View):
- def get(self, request, location_id, *args, **kwargs):
- reviews = Review.objects.filter(location_id=location_id).order_by('-update_time')
- locations = Location.objects.all()
- 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, 'locations': locations}
- return render(request, 'review_list.html', context)
- class ReviewListView(View):
- def get(self, request, *args, **kwargs):
- reviews = Review.objects.all().order_by('-update_time')
- locations = Location.objects.all()
- 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, 'locations': locations}
- return render(request, 'review_list.html', context)
- class UnRepliedReviewList(View):
- def post(self, request, *args, **kwargs):
- form = ReplyForm(self.request.POST)
- if form.is_valid():
- reply = form.cleaned_data.get('reply')
- review_id = self.request.POST['review_id']
- review = Review.objects.filter(pk=review_id).first()
- now = timezone.now()
- if review:
- review_reply = Reply(replied_text=reply, create_time=now)
- review_reply.save()
- review.reply = review_reply
- review.save()
- response = reply_review(review=review, replied_text=reply)
- if response.status_code == 200:
- messages.success(request, f'Your reply has been posted!')
- else:
- messages.warning(request, f'User might remove this review. Reply has been saved in database!')
- return redirect('un-replied-review')
- def get(self, request, *args, **kwargs):
- 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)
- context = {'reviews': reviews, 'form': form}
- return render(request, 'dashboard.html', context=context)
- class ReportView(View):
- def get(self, request, *args, **kwargs):
- locations = Location.objects.all()
- return render(request, 'report.html', {'location_report': locations})
- def sync_location(request, location_id):
- sync_all_review(location_id)
- return redirect('review-report')
|