Browse Source

Prednasky: v aktuálních výsledcích jen aktuální výsledky

middleware_test
LEdoian 6 years ago
parent
commit
bd92068b37
  1. 9
      prednasky/views.py

9
prednasky/views.py

@ -3,7 +3,7 @@ from django.shortcuts import render, get_object_or_404
from django.views import generic from django.views import generic
from django.shortcuts import HttpResponseRedirect from django.shortcuts import HttpResponseRedirect
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.db.models import Sum from django.db.models import Sum, Subquery
from prednasky.models import Prednaska, Hlasovani, Seznam, STAV_NAVRH from prednasky.models import Prednaska, Hlasovani, Seznam, STAV_NAVRH
from seminar.models import Soustredeni from seminar.models import Soustredeni
@ -55,9 +55,14 @@ class SeznamListView(generic.ListView):
def get_queryset(self): def get_queryset(self):
self.seznam = get_object_or_404(Seznam, id=self.kwargs["seznam"]) self.seznam = get_object_or_404(Seznam, id=self.kwargs["seznam"])
# Od "annotate" je to hack opsaný ze stack overflow, kterým se filtrují
# jen výsledky z aktuálního seznamu. Dosud se zobrazoval součet bodů u
# přednášky od počátku historie.
# TODO: udělat lépe (Django 2 má Sum s filtrem)
prednasky = Prednaska.objects.filter(seznamy=self.seznam).order_by( prednasky = Prednaska.objects.filter(seznamy=self.seznam).order_by(
'org__user__first_name', 'org__user__last_name' 'org__user__first_name', 'org__user__last_name'
).annotate(body=Sum('hlasovani__body')) ).annotate(body=Subquery(Hlasovani.objects.filter(seznam=self.seznam)
.values('body').annotate(b=Sum('body')).values('b')))
return prednasky return prednasky

Loading…
Cancel
Save