[FIX] HORILLA_VIEWS: Ensure consistent pagination by ordering queryset in record_queryset_paginator()
This commit is contained in:
@@ -6,12 +6,18 @@ from horilla.horilla_middlewares import _thread_locals
|
|||||||
|
|
||||||
def record_queryset_paginator(request, queryset, page_name, records_per_page=10):
|
def record_queryset_paginator(request, queryset, page_name, records_per_page=10):
|
||||||
"""
|
"""
|
||||||
This method is used to return the paginator entries
|
Returns paginated results with safe ordering.
|
||||||
"""
|
"""
|
||||||
|
# 803
|
||||||
|
if not queryset.ordered:
|
||||||
|
if hasattr(queryset.model, "created_at"):
|
||||||
|
queryset = queryset.order_by("-created_at")
|
||||||
|
else:
|
||||||
|
queryset = queryset.order_by("-id")
|
||||||
|
|
||||||
page = request.GET.get(page_name)
|
page = request.GET.get(page_name)
|
||||||
queryset = Paginator(queryset, records_per_page)
|
paginator = Paginator(queryset, records_per_page)
|
||||||
queryset = queryset.get_page(page)
|
return paginator.get_page(page)
|
||||||
return queryset
|
|
||||||
|
|
||||||
|
|
||||||
def generate_groups(request, groupers, queryset, page_name, group_field, is_fk_field):
|
def generate_groups(request, groupers, queryset, page_name, group_field, is_fk_field):
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ from venv import logger
|
|||||||
from django import forms, template
|
from django import forms, template
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.core.cache import cache as CACHE
|
from django.core.cache import cache as CACHE
|
||||||
from django.core.paginator import Paginator
|
from django.core.paginator import Page, Paginator
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models.fields.related import ForeignKey
|
from django.db.models.fields.related import ForeignKey
|
||||||
from django.db.models.fields.related_descriptors import (
|
from django.db.models.fields.related_descriptors import (
|
||||||
@@ -302,7 +302,7 @@ def paginator_qry(qryset, page_number, records_per_page=50):
|
|||||||
"""
|
"""
|
||||||
This method is used to paginate queryset
|
This method is used to paginate queryset
|
||||||
"""
|
"""
|
||||||
if not qryset.ordered:
|
if not isinstance(qryset, Page) and not qryset.ordered:
|
||||||
qryset = (
|
qryset = (
|
||||||
qryset.order_by("-created_at")
|
qryset.order_by("-created_at")
|
||||||
if hasattr(qryset.model, "created_at")
|
if hasattr(qryset.model, "created_at")
|
||||||
|
|||||||
Reference in New Issue
Block a user