Skip to content
Snippets Groups Projects
Verified Commit 4c62ed7e authored by jindra12's avatar jindra12
Browse files

Unify paginator use

parent 7132f43f
Branches
No related tags found
2 merge requests!816Release,!801Prepare basic shared tags
Pipeline #13848 passed
......@@ -4,7 +4,6 @@ from functools import cached_property
from django.core.cache import cache
from django.core.exceptions import ValidationError
from django.core.paginator import Paginator
from django.db import models
from django.http import HttpResponseNotFound, HttpResponseRedirect
from django.shortcuts import render
......@@ -543,13 +542,12 @@ class DistrictArticlesPage(
def get_context(self, request):
context = super().get_context(request)
context["articles"] = self.materialize_shared_articles_query(
Paginator(
context["articles"] = self.get_page_with_shared_articles(
self.append_all_shared_articles_query(
DistrictArticlePage.objects.child_of(self)
),
self.max_items,
).get_page(request.GET.get("page"))
request.GET.get("page"),
)
return context
......@@ -615,11 +613,8 @@ class DistrictArticlesPage(
)
return {
"article_page_list": self.materialize_shared_articles_query(
Paginator(
article_page_qs,
self.max_items,
).get_page(request.GET.get("page"))
"article_page_list": self.get_page_with_shared_articles(
article_page_qs, self.max_items, request.GET.get("page")
),
"tag": tag,
}
......
......
......@@ -501,16 +501,14 @@ class MainArticlesPage(
return JsonResponse(data=data, safe=False)
def get_articles_response(self, request):
article_paginator = Paginator(
article_page = self.get_page_with_shared_articles(
self.append_all_shared_articles_query(
MainArticlePage.objects.filter(
article_type=ARTICLE_TYPES.PRESS_RELEASE
),
).order_by("union_date", "union_title"),
10,
)
article_page = self.materialize_shared_articles_query(
article_paginator.get_page(request.GET.get("page", 1))
request.GET.get("page", 1),
)
context = {"article_data_list": article_page.object_list}
html_content = render(
......@@ -523,7 +521,7 @@ class MainArticlesPage(
return JsonResponse(data=data, safe=False)
def get_all_articles_search_response(self, request):
article_paginator = Paginator(
article_page = self.get_page_with_shared_articles(
self.append_all_shared_articles_query(
MainArticlePage.objects.search(
request.GET["q"],
......@@ -531,9 +529,7 @@ class MainArticlesPage(
)
),
10,
)
article_page = self.materialize_shared_articles_query(
article_paginator.get_page(request.GET.get("page", 1))
request.GET.get("page", 1),
)
context = {"article_data_list": article_page.object_list}
html_content = render(
......
......
......@@ -3,10 +3,10 @@ from enum import Enum
from functools import reduce
from django.apps import apps
from django.core.paginator import Paginator
from django.db import models
from django.db.models import Q
from django.db.models.expressions import ExpressionWrapper, F, Value
from django.db.models.functions import Coalesce
from django.db.models.expressions import F, Value
from django.utils import timezone
from modelcluster.fields import ParentalKey, ParentalManyToManyField
from taggit.models import ItemBase, Tag, TagBase
......@@ -545,6 +545,16 @@ class ArticlesMixin(models.Model):
)
)
def get_page_with_shared_articles(
self, query: models.QuerySet, page_size: int, page: int
):
return self.materialize_shared_articles_query(
Paginator(
query,
page_size,
).get_page(page)
)
def append_all_shared_articles(
self, previous_query: models.QuerySet | None = None, custom_article_query=None
):
......
......
......@@ -2,7 +2,6 @@ import random
from captcha.fields import CaptchaField
from django import forms
from django.core.paginator import Paginator
from django.db import models
from django.utils.translation import gettext_lazy
from modelcluster.contrib.taggit import ClusterTaggableManager
......@@ -566,8 +565,10 @@ class UniwebArticlesIndexPage(
else articles,
)
context["articles"] = self.materialize_shared_articles_query(
Paginator(articles, ARTICLES_PER_PAGE).get_page(num)
context["articles"] = self.get_page_with_shared_articles(
articles,
ARTICLES_PER_PAGE,
num,
)
context["tags"] = self.search_tags_by_unioned_id_query(articles_ids)
context["active_tag"] = tag
......
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment