[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):
|
||||
"""
|
||||
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)
|
||||
queryset = Paginator(queryset, records_per_page)
|
||||
queryset = queryset.get_page(page)
|
||||
return queryset
|
||||
paginator = Paginator(queryset, records_per_page)
|
||||
return paginator.get_page(page)
|
||||
|
||||
|
||||
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.contrib import messages
|
||||
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.models.fields.related import ForeignKey
|
||||
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
|
||||
"""
|
||||
if not qryset.ordered:
|
||||
if not isinstance(qryset, Page) and not qryset.ordered:
|
||||
qryset = (
|
||||
qryset.order_by("-created_at")
|
||||
if hasattr(qryset.model, "created_at")
|
||||
|
||||
Reference in New Issue
Block a user