diff --git a/core/templates/core/page_list.jinja b/core/templates/core/page_list.jinja index dfb8ea48..7a64035b 100644 --- a/core/templates/core/page_list.jinja +++ b/core/templates/core/page_list.jinja @@ -5,16 +5,12 @@ {% endblock %} {% block content %} - {% if page_list %} -

{% trans %}Page list{% endtrans %}

- - {% else %} - {% trans %}There is no page in this website.{% endtrans %} - {% endif %} +

{% trans %}Page list{% endtrans %}

+ {% endblock %} diff --git a/core/views/page.py b/core/views/page.py index 23898217..db366891 100644 --- a/core/views/page.py +++ b/core/views/page.py @@ -12,7 +12,10 @@ # OR WITHIN THE LOCAL FILE "LICENSE" # # + from django.contrib.auth.mixins import PermissionRequiredMixin +from django.db.models import F, OuterRef, Subquery +from django.db.models.functions import Coalesce # This file contains all the views that concern the page model from django.forms.models import modelform_factory @@ -43,6 +46,20 @@ class CanEditPagePropMixin(CanEditPropMixin): class PageListView(CanViewMixin, ListView): model = Page template_name = "core/page_list.jinja" + queryset = ( + Page.objects.annotate( + display_name=Coalesce( + Subquery( + PageRev.objects.filter(page=OuterRef("id")) + .order_by("-date") + .values("title")[:1] + ), + F("name"), + ) + ) + .prefetch_related("view_groups") + .select_related("parent") + ) class PageView(CanViewMixin, DetailView):