diff --git a/main/models.py b/main/models.py index dee152ac197679b11bef51ea880a9c5ec3ad57d7..f8817a7107f0833eb2266836b4edbfe651ac9907 100644 --- a/main/models.py +++ b/main/models.py @@ -160,9 +160,7 @@ class MainHomePage(MenuMixin, ExtendedMetadataHomePageMixin, MetadataPageMixin, def get_context(self, request, *args, **kwargs): context = super().get_context(request, args, kwargs) - tweets_page = request.GET.get('page', 1) - tweet_paginator = Paginator(Tweet.objects.order_by("-twitter_id"), self.max_items) - context["tweet_list"] = tweet_paginator.get_page(tweets_page) + context["tweet_list"] = Tweet.objects.order_by("-twitter_id")[:4] context["regions"] = REGION_CHOICES last_month = timezone.now().today().replace(day=1) - timedelta(days=1) first_day_of_last_month = last_month.replace(day=1) @@ -173,40 +171,45 @@ class MainHomePage(MenuMixin, ExtendedMetadataHomePageMixin, MetadataPageMixin, context["article_data_list"] = sorted_article_qs[:3] return context - def serve(self, request, *args, **kwargs): + def get_region_response(self, request): + last_month = timezone.now().today().replace(day=1) - timedelta(days=1) + first_day_of_last_month = last_month.replace(day=1) + if request.GET.get('region', None) == 'VSK': + sorted_article_qs = MainArticlePage.objects.filter( + date__gt=first_day_of_last_month + ).order_by("-date") + else: + sorted_article_qs = MainArticlePage.objects.filter( + date__gt=first_day_of_last_month, region=request.GET.get('region', None) + ).order_by("-date") + context = { + "article_data_list": sorted_article_qs[:3] + } + data = { + 'html': render(request, 'main/includes/small_article_preview.html', context).content.decode("utf-8") + } + return JsonResponse(data=data, safe=False) + + def get_twitter_response(self, request): + tweet_paginator = Paginator(Tweet.objects.order_by("-twitter_id"), self.max_items) + tweet_page = tweet_paginator.get_page(request.GET.get('page', 1)) + context = { + "tweet_list": tweet_page.object_list + } + html_content = render(request, 'main/includes/twitter_widget.html', context).content + data = { + 'html': html_content.decode("utf-8"), + 'last_page': tweet_page.paginator.num_pages, + } + return JsonResponse(data=data, safe=False) + def serve(self, request, *args, **kwargs): if not request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest': return super().serve(request, *args, **kwargs) if 'region' in request.GET: - last_month = timezone.now().today().replace(day=1) - timedelta(days=1) - first_day_of_last_month = last_month.replace(day=1) - if request.GET.get('region', None) == 'VSK': - sorted_article_qs = MainArticlePage.objects.filter( - date__gt=first_day_of_last_month - ).order_by("-date") - else: - sorted_article_qs = MainArticlePage.objects.filter( - date__gt=first_day_of_last_month, region=request.GET.get('region', None) - ).order_by("-date") - context = { - "article_data_list": sorted_article_qs[:3] - } - data = { - 'html': render(request, 'main/includes/small_article_preview.html', context).content.decode("utf-8") - } - return JsonResponse(data=data, safe=False) + return self.get_region_response(request) else: - tweet_paginator = Paginator(Tweet.objects.order_by("-twitter_id"), self.max_items) - tweet_page = tweet_paginator.get_page(request.GET.get('page', 1)) - context = { - "tweet_list": tweet_page.object_list - } - html_content = render(request, 'main/includes/twitter_widget.html', context).content - data = { - 'html': html_content.decode("utf-8"), - 'last_page': tweet_page.paginator.num_pages, - } - return JsonResponse(data=data, safe=False) + return self.get_twitter_response(request) @cached_property def newsletter_subscribe_url(self):