|
@@ -1,11 +1,14 @@
|
|
|
-from django.shortcuts import render
|
|
|
-from django.views.generic.list import View
|
|
|
+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 django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
|
|
|
|
|
|
|
|
-class ReviewListView(View):
|
|
|
+class ReviewListByLocationView(View):
|
|
|
|
|
|
def get(self, request, location_id, *args, **kwargs):
|
|
|
reviews = Review.objects.filter(location_id=location_id).order_by('-update_time')
|
|
@@ -21,3 +24,46 @@ class ReviewListView(View):
|
|
|
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()
|
|
|
+ messages.success(request, f'Your reply has been posted!')
|
|
|
+ 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).order_by('-update_time')
|
|
|
+ return render(request, 'dashboard.html', {'reviews': reviews, 'form': form})
|