Caches é SQL optimisations

This commit is contained in:
loulous27 2025-11-23 14:43:49 +01:00
parent 213644d0af
commit f1673da45f
5 changed files with 69 additions and 14 deletions

View file

@ -20,10 +20,16 @@ from django.views.generic.dates import ArchiveIndexView, YearArchiveView
from django.views.generic.detail import DetailView
from django.views.generic.edit import DeleteView, FormView
from PIL import Image
from django.contrib.auth import get_user_model
from .forms import UploadForm
from .models import Gallery, Photo, Tag
# Cette ligne renvoie le modèle d'utilisateur actif (le natif ou le vôtre)
User = get_user_model()
class GalleryDateView(LoginRequiredMixin):
model = Gallery
@ -135,11 +141,11 @@ class GalleryDetailView(LoginRequiredMixin, DetailView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
# Non-staff members only see public photos
# Non-staff members only see public photos + prefetch all owners informations (Optimisation)
if self.request.user.is_staff:
context["photos"] = self.object.photos.all()
context["photos"] = self.object.photos.all().select_related('owner')
else:
context["photos"] = self.object.photos.filter(is_public=True)
context["photos"] = self.object.photos.filter(is_public=True).select_related('onwer')
# List owners
context["owners"] = []
@ -147,6 +153,8 @@ class GalleryDetailView(LoginRequiredMixin, DetailView):
if photo.owner not in context["owners"]:
context["owners"].append(photo.owner)
# Filter on owner
if "owner" in self.kwargs:
context["photos"] = context["photos"].filter(owner__id=self.kwargs["owner"])