Skip to content
Snippets Groups Projects
Commit fef96906 authored by Benjamin Hättasch's avatar Benjamin Hättasch
Browse files

Speedup special attention ak admin view

Use annotations to query counts of owners, slots and availabilities directly in main query
parent f196f823
No related merge requests found
from django.contrib import messages from django.contrib import messages
from django.contrib.messages.views import SuccessMessageMixin from django.contrib.messages.views import SuccessMessageMixin
from django.db.models import Count
from django.urls import reverse_lazy from django.urls import reverse_lazy
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from django.views.generic import ListView, DetailView, UpdateView from django.views.generic import ListView, DetailView, UpdateView
...@@ -73,7 +74,7 @@ class SpecialAttentionAKsAdminView(AdminViewMixin, DetailView): ...@@ -73,7 +74,7 @@ class SpecialAttentionAKsAdminView(AdminViewMixin, DetailView):
context = super().get_context_data(**kwargs) context = super().get_context_data(**kwargs)
context["title"] = f"{_('AKs requiring special attention for')} {context['event']}" context["title"] = f"{_('AKs requiring special attention for')} {context['event']}"
aks = AK.objects.filter(event=context["event"]) aks = AK.objects.filter(event=context["event"]).annotate(Count('owners', distinct=True)).annotate(Count('akslot', distinct=True)).annotate(Count('availabilities', distinct=True))
aks_with_comment = [] aks_with_comment = []
ak_wishes_with_slots = [] ak_wishes_with_slots = []
aks_without_availabilities = [] aks_without_availabilities = []
...@@ -83,13 +84,13 @@ class SpecialAttentionAKsAdminView(AdminViewMixin, DetailView): ...@@ -83,13 +84,13 @@ class SpecialAttentionAKsAdminView(AdminViewMixin, DetailView):
if ak.notes != "": if ak.notes != "":
aks_with_comment.append(ak) aks_with_comment.append(ak)
if ak.wish: if ak.owners__count == 0:
if ak.akslot_set.count() > 0: if ak.akslot__count > 0:
ak_wishes_with_slots.append(ak) ak_wishes_with_slots.append(ak)
else: else:
if ak.akslot_set.count() == 0: if ak.akslot__count == 0:
aks_without_slots.append(ak) aks_without_slots.append(ak)
if ak.availabilities.count() == 0: if ak.availabilities__count == 0:
aks_without_availabilities.append(ak) aks_without_availabilities.append(ak)
context["aks_with_comment"] = aks_with_comment context["aks_with_comment"] = aks_with_comment
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment