|
|
@ -3,7 +3,7 @@ from django.shortcuts import render, get_object_or_404 |
|
|
|
from django.views import generic |
|
|
|
from django.shortcuts import HttpResponseRedirect |
|
|
|
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 seminar.models import Soustredeni |
|
|
@ -55,9 +55,14 @@ class SeznamListView(generic.ListView): |
|
|
|
|
|
|
|
def get_queryset(self): |
|
|
|
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( |
|
|
|
'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 |
|
|
|
|
|
|
|
|
|
|
|