Skip to content

Commit

Permalink
⚡ Add prefetch_related for HD Views querysets
Browse files Browse the repository at this point in the history
  • Loading branch information
Chatewgne committed Dec 16, 2022
1 parent f2c0227 commit caf3e91
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 11 deletions.
6 changes: 4 additions & 2 deletions geotrek/api/v2/views/outdoor.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

from geotrek.api.v2 import serializers as api_serializers, \
filters as api_filters, viewsets as api_viewsets
from geotrek.common.models import Attachment
from geotrek.common.models import Attachment, HDViewPoint
from geotrek.outdoor import models as outdoor_models


Expand All @@ -24,7 +24,9 @@ def get_queryset(self):
return outdoor_models.Site.objects \
.annotate(geom_transformed=Transform(F('geom'), settings.API_SRID)) \
.prefetch_related(Prefetch('attachments',
queryset=Attachment.objects.select_related('license', 'filetype', 'filetype__structure'))) \
queryset=Attachment.objects.select_related('license', 'filetype', 'filetype__structure')),
Prefetch('view_points',
queryset=HDViewPoint.objects.select_related('content_type', 'license'))) \
.order_by('name') # Required for reliable pagination


Expand Down
11 changes: 7 additions & 4 deletions geotrek/api/v2/views/trekking.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from geotrek.api.v2.decorators import cache_response_detail
from geotrek.api.v2.functions import Length3D
from geotrek.api.v2.renderers import SVGProfileRenderer
from geotrek.common.models import Attachment, AccessibilityAttachment
from geotrek.common.models import Attachment, AccessibilityAttachment, HDViewPoint
from geotrek.trekking import models as trekking_models


Expand Down Expand Up @@ -39,8 +39,9 @@ def get_queryset(self):
Prefetch('attachments_accessibility',
queryset=AccessibilityAttachment.objects.select_related('license')),
Prefetch('web_links',
queryset=trekking_models.WebLink.objects.select_related('category'))) \
.prefetch_related('view_points') \
queryset=trekking_models.WebLink.objects.select_related('category')),
Prefetch('view_points',
queryset=HDViewPoint.objects.select_related('content_type', 'license'))) \
.annotate(geom3d_transformed=Transform(F('geom_3d'), settings.API_SRID),
length_3d_m=Length3D('geom_3d')) \
.order_by("name") # Required for reliable pagination
Expand Down Expand Up @@ -169,7 +170,9 @@ class POIViewSet(api_viewsets.GeotrekGeometricViewset):
.select_related('topo_object', 'type', ) \
.prefetch_related('topo_object__aggregations',
Prefetch('attachments',
queryset=Attachment.objects.select_related('license', 'filetype', 'filetype__structure'))) \
queryset=Attachment.objects.select_related('license', 'filetype', 'filetype__structure')),
Prefetch('view_points',
queryset=HDViewPoint.objects.select_related('content_type', 'license'))) \
.annotate(geom3d_transformed=Transform(F('geom_3d'), settings.API_SRID)) \
.order_by('pk') # Required for reliable pagination

Expand Down
8 changes: 6 additions & 2 deletions geotrek/outdoor/views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from django.conf import settings
from django.contrib.gis.db.models.functions import Transform
from django.db.models import Q
from django.db.models import Q, Prefetch
from geotrek.common.models import HDViewPoint
from mapentity.helpers import alphabet_enumeration
from mapentity.views import (MapEntityList, MapEntityDetail, MapEntityDocument, MapEntityCreate,
MapEntityUpdate, MapEntityDelete, MapEntityFormat)
Expand All @@ -27,7 +28,10 @@ class SiteList(CustomColumnsMixin, MapEntityList):


class SiteDetail(CompletenessMixin, MapEntityDetail):
queryset = Site.objects.all()
queryset = Site.objects.all().prefetch_related(
Prefetch('view_points',
queryset=HDViewPoint.objects.select_related('content_type', 'license'))
)

def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
Expand Down
12 changes: 9 additions & 3 deletions geotrek/trekking/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
from geotrek.common.mixins.api import APIViewSet
from geotrek.common.mixins.forms import FormsetMixin
from geotrek.common.mixins.views import CompletenessMixin, CustomColumnsMixin, MetaMixin
from geotrek.common.models import Attachment, RecordSource, TargetPortal, Label
from geotrek.common.models import Attachment, HDViewPoint, RecordSource, TargetPortal, Label
from geotrek.common.permissions import PublicOrReadPermMixin
from geotrek.common.views import DocumentPublic, DocumentBookletPublic, MarkupPublic
from geotrek.common.viewsets import GeotrekMapentityViewSet
Expand Down Expand Up @@ -100,7 +100,10 @@ def render_to_response(self, context):


class TrekDetail(CompletenessMixin, MapEntityDetail):
queryset = Trek.objects.existing().select_related('topo_object').prefetch_related('view_points')
queryset = Trek.objects.existing().select_related('topo_object').prefetch_related(
Prefetch('view_points',
queryset=HDViewPoint.objects.select_related('content_type', 'license'))
)

@property
def icon_sizes(self):
Expand Down Expand Up @@ -329,7 +332,10 @@ def get_queryset(self):


class POIDetail(CompletenessMixin, MapEntityDetail):
queryset = POI.objects.existing()
queryset = POI.objects.existing().prefetch_related(
Prefetch('view_points',
queryset=HDViewPoint.objects.select_related('content_type', 'license'))
)

def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
Expand Down

0 comments on commit caf3e91

Please sign in to comment.