views.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. from django.shortcuts import render
  2. from django.shortcuts import redirect
  3. from django.views.generic import View
  4. from django.contrib import messages
  5. from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
  6. from django.contrib.auth.mixins import LoginRequiredMixin
  7. from django.utils import timezone
  8. from .models import FacebookReview, FacebookReviewReply
  9. from .forms import ReplyForm
  10. from .review_utils import reply2facebook_review
  11. class FacebookReviews(LoginRequiredMixin, View):
  12. def post(self, request, *args, **kwargs):
  13. form = ReplyForm(self.request.POST)
  14. if form.is_valid():
  15. replied_text = form.cleaned_data.get('reply')
  16. review_id = self.request.POST['review_id']
  17. print('review-id', review_id)
  18. # TODO: Reply this review using selenium...
  19. reply2facebook_review(
  20. review_id=review_id,
  21. reply=replied_text,
  22. love=True
  23. )
  24. FacebookReviewReply.objects.create(
  25. review_id=review_id,
  26. create_time=timezone.now(),
  27. replied_text=replied_text
  28. )
  29. messages.success(request, f'Your reply has been posted!')
  30. return redirect('facebook-reviews')
  31. def get(self, request, *args, **kwargs):
  32. now = timezone.now()
  33. form = ReplyForm()
  34. date = now - timezone.timedelta(days=15)
  35. reviews = FacebookReview.objects.filter(
  36. facebookreviewreply=None,
  37. create_time__gte=date
  38. ).order_by('create_time')
  39. page = request.GET.get('page', 1)
  40. paginator = Paginator(reviews, 10)
  41. try:
  42. reviews = paginator.page(page)
  43. except PageNotAnInteger:
  44. reviews = paginator.page(1)
  45. except EmptyPage:
  46. reviews = paginator.page(paginator.num_pages)
  47. context = {'reviews': reviews, 'form': form}
  48. return render(request, 'facebook-reviews.html', context=context)