File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11from __future__ import annotations
22
3+ import contextlib
34import dataclasses
45import datetime
56import re
@@ -19,6 +20,12 @@ class Page(BaseAbstractModel):
1920 def __str__ (self ):
2021 return str (self .title )
2122
23+ def active_sections (self ) -> list [Section ]:
24+ with contextlib .suppress (AttributeError ):
25+ return self ._prefetched_active_sections
26+
27+ return self .sections .filter_active ().order_by ("order" )
28+
2229
2330@dataclasses .dataclass
2431class SitemapGraph :
Original file line number Diff line number Diff line change 1- from cms .models import Page , Sitemap
1+ from cms .models import Page , Section , Sitemap
22from cms .serializers import PageSerializer , SitemapSerializer
33from core .const .tag import OpenAPITag
4+ from django .db import models
45from django .utils .decorators import method_decorator
56from drf_spectacular .utils import extend_schema
67from rest_framework import mixins , viewsets
@@ -15,4 +16,10 @@ class SitemapViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
1516@method_decorator (name = "retrieve" , decorator = extend_schema (tags = [OpenAPITag .CMS ]))
1617class PageViewSet (mixins .RetrieveModelMixin , viewsets .GenericViewSet ):
1718 serializer_class = PageSerializer
18- queryset = Page .objects .filter_active ().prefetch_related ("sections" )
19+ queryset = Page .objects .filter_active ().prefetch_related (
20+ models .Prefetch (
21+ lookup = "sections" ,
22+ queryset = Section .objects .filter_active ().order_by ("order" ),
23+ to_attr = "_prefetched_active_sections" ,
24+ )
25+ )
You can’t perform that action at this time.
0 commit comments