from django.shortcuts import render from django.shortcuts import redirect from django.views.generic import View from django.contrib import messages from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.contrib.auth.mixins import LoginRequiredMixin from django.utils import timezone from .models import FacebookReview, FacebookReviewReply from .forms import ReplyForm from .review_utils import reply2facebook_review class FacebookReviews(LoginRequiredMixin, View): def post(self, request, *args, **kwargs): form = ReplyForm(self.request.POST) if form.is_valid(): replied_text = form.cleaned_data.get('reply') review_id = self.request.POST['review_id'] print('review-id', review_id) # TODO: Reply this review using selenium... reply2facebook_review( review_id=review_id, reply=replied_text, love=True ) FacebookReviewReply.objects.create( review_id=review_id, create_time=timezone.now(), replied_text=replied_text ) messages.success(request, f'Your reply has been posted!') return redirect('facebook-reviews') def get(self, request, *args, **kwargs): 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} return render(request, 'facebook-reviews.html', context=context)