From e0903c59d9d8a086e15cf6262e64bb5fedca5a38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-S=C3=A9bastien=20Caux?= <git@jscaux.org> Date: Sun, 20 Feb 2022 13:12:58 +0100 Subject: [PATCH] Add some prefetching for organizations --- scipost_django/organizations/models.py | 8 +++++++- .../organizations/_organization_detail_contents.html | 1 + scipost_django/organizations/views.py | 10 ++++++++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/scipost_django/organizations/models.py b/scipost_django/organizations/models.py index 6e39ddac1..426f0017a 100644 --- a/scipost_django/organizations/models.py +++ b/scipost_django/organizations/models.py @@ -322,7 +322,13 @@ class Organization(models.Model): rep[str(year)] = {} year_expenditures = 0 rep[str(year)]["expenditures"] = {} - pfy = self.pubfractions.filter(publication__publication_date__year=year) + pfy = self.pubfractions.filter( + publication__publication_date__year=year + ).prefetch_related( + "publication__in_journal", + "publication__in_issue__in_journal", + "publication__in_issue__in_volume__in_journal", + ) contribution = self.total_subsidies_in_year(year) rep[str(year)]["contribution"] = contribution journal_labels = set( diff --git a/scipost_django/organizations/templates/organizations/_organization_detail_contents.html b/scipost_django/organizations/templates/organizations/_organization_detail_contents.html index fea574327..7c1bf8c91 100644 --- a/scipost_django/organizations/templates/organizations/_organization_detail_contents.html +++ b/scipost_django/organizations/templates/organizations/_organization_detail_contents.html @@ -51,6 +51,7 @@ {% endfor %} <img class="rounded" style="max-height: 8rem; max-width: 16rem;" src="{{ org.logo.url }}" alt="{{ org.name }} logo"> + </picture> </li> {% elif org.logo %} <img class="d-flex me-3 {{ org.css_class }}" src="{{ org.logo.url }}" alt="image"/> diff --git a/scipost_django/organizations/views.py b/scipost_django/organizations/views.py index c432bbd2d..e66cc0d78 100644 --- a/scipost_django/organizations/views.py +++ b/scipost_django/organizations/views.py @@ -166,7 +166,7 @@ class OrganizationListView(PaginationMixin, ListView): ) if ordering == "desc": qs = qs.reverse() - return qs + return qs.select_related('logos') def get_organization_detail(request): @@ -194,7 +194,13 @@ class OrganizationDetailView(DetailView): queryset = super().get_queryset() if not self.request.user.has_perm("scipost.can_manage_organizations"): queryset = queryset.exclude(orgtype=ORGTYPE_PRIVATE_BENEFACTOR) - return queryset + return queryset.prefetch_related( + "children", + "subsidy_set", + "contactrole_set", + "organizationevent_set", + "pubfractions", + ) class OrganizationEventCreateView(PermissionsMixin, CreateView): -- GitLab