vysledkovka | uklid a procisteni
This commit is contained in:
parent
194658c64d
commit
fdc38f99bc
3 changed files with 13 additions and 35 deletions
|
@ -240,38 +240,16 @@ def hlavni_problem(problem):
|
||||||
problem = problem.nadproblem
|
problem = problem.nadproblem
|
||||||
return problem
|
return problem
|
||||||
|
|
||||||
def hlavni_problemy_rocniku(rocnik, jen_verejne=True):
|
def problemy_rocniku(rocnik, jen_verejne=True):
|
||||||
""" Pro zadaný ročník vrátí hlavní problémy ročníku,
|
return m.Problem.objects.filter(hodnoceni__in = m.Hodnoceni.objects.filter(cislo_body__in = cisla_rocniku(rocnik, jen_verejne))).distinct().select_related('nadproblem').select_related('nadproblem__nadproblem')
|
||||||
tj. ty, které už nemají nadproblém."""
|
|
||||||
hlavni_problemy = []
|
|
||||||
for cislo in cisla_rocniku(rocnik, jen_verejne):
|
|
||||||
for problem in hlavni_problemy_cisla(cislo):
|
|
||||||
hlavni_problemy.append(problem)
|
|
||||||
hlavni_problemy_set = set(hlavni_problemy)
|
|
||||||
hlavni_problemy = list(hlavni_problemy_set)
|
|
||||||
hlavni_problemy.sort(key=lambda k:k.kod_v_rocniku) # setřídit podle pořadí
|
|
||||||
|
|
||||||
return hlavni_problemy
|
|
||||||
|
|
||||||
def problemy_cisla(cislo):
|
def problemy_cisla(cislo):
|
||||||
""" Vrátí seznam všech problémů s body v daném čísle. """
|
""" Vrátí seznam všech problémů s body v daném čísle. """
|
||||||
return m.Problem.objects.filter(hodnoceni__in = m.Hodnoceni.objects.filter(cislo_body = cislo)).distinct().select_related('nadproblem')
|
return m.Problem.objects.filter(hodnoceni__in = m.Hodnoceni.objects.filter(cislo_body = cislo)).distinct().select_related('nadproblem').select_related('nadproblem__nadproblem')
|
||||||
|
|
||||||
# hodnoceni = cislo.hodnoceni.select_related('problem').all()
|
|
||||||
# hodnocení, která se vážou k danému číslu
|
|
||||||
|
|
||||||
# problemy = [h.problem for h in hodnoceni]
|
|
||||||
# problemy_set = set(problemy) # chceme každý problém unikátně,
|
|
||||||
# problemy = (list(problemy_set)) # převedení na množinu a zpět to zaručí
|
|
||||||
|
|
||||||
# return problemy
|
|
||||||
|
|
||||||
|
|
||||||
def hlavni_problemy_cisla(cislo, problemy=None):
|
def hlavni_problemy_f(problemy=None):
|
||||||
""" Vrátí seznam všech problémů s body v daném čísle, které již nemají nadproblém. """
|
""" Vrátí seznam všech problémů, které již nemají nadproblém. """
|
||||||
if problemy is None:
|
|
||||||
problemy = problemy_cisla(cislo)
|
|
||||||
|
|
||||||
# hlavní problémy čísla
|
# hlavní problémy čísla
|
||||||
# (mají vlastní sloupeček ve výsledkovce, nemají nadproblém)
|
# (mají vlastní sloupeček ve výsledkovce, nemají nadproblém)
|
||||||
hlavni_problemy = set()
|
hlavni_problemy = set()
|
||||||
|
@ -290,7 +268,7 @@ def podproblemy_v_cislu(cislo, problemy=None, hlavni_problemy=None):
|
||||||
if problemy is None:
|
if problemy is None:
|
||||||
problemy = problemy_cisla(cislo)
|
problemy = problemy_cisla(cislo)
|
||||||
if hlavni_problemy is None:
|
if hlavni_problemy is None:
|
||||||
hlavni_problemy = hlavni_problemy_cisla(cislo, problemy)
|
hlavni_problemy = hlavni_problemy_f(problemy)
|
||||||
|
|
||||||
podproblemy = dict((hp.id, []) for hp in hlavni_problemy)
|
podproblemy = dict((hp.id, []) for hp in hlavni_problemy)
|
||||||
hlavni_problemy = set(hlavni_problemy)
|
hlavni_problemy = set(hlavni_problemy)
|
||||||
|
|
|
@ -49,7 +49,7 @@ import csv
|
||||||
import logging
|
import logging
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from seminar.utils import aktivniResitele, resi_v_rocniku, hlavni_problemy_rocniku, cisla_rocniku, hlavni_problemy_cisla
|
from seminar.utils import aktivniResitele, resi_v_rocniku, problemy_rocniku, cisla_rocniku, hlavni_problemy_f
|
||||||
|
|
||||||
# ze starého modelu
|
# ze starého modelu
|
||||||
#def verejna_temata(rocnik):
|
#def verejna_temata(rocnik):
|
||||||
|
@ -657,10 +657,10 @@ class RocnikView(generic.DetailView):
|
||||||
if self.request.user.je_org:
|
if self.request.user.je_org:
|
||||||
context['cisla_s_neverejnymi'] = cisla_rocniku(context["rocnik"], jen_verejne=False)
|
context['cisla_s_neverejnymi'] = cisla_rocniku(context["rocnik"], jen_verejne=False)
|
||||||
context['radky_vysledkovky_s_neverejnymi'] = vysledkovka_rocniku(context["rocnik"], jen_verejne=False)
|
context['radky_vysledkovky_s_neverejnymi'] = vysledkovka_rocniku(context["rocnik"], jen_verejne=False)
|
||||||
context['hlavni_problemy_v_rocniku_s_neverejnymi'] = hlavni_problemy_rocniku(context["rocnik"], jen_verejne=False)
|
context['hlavni_problemy_v_rocniku_s_neverejnymi'] = hlavni_problemy_f(problemy_rocniku(context["rocnik"], jen_verejne=False))
|
||||||
context['cisla'] = cisla_rocniku(context["rocnik"])
|
context['cisla'] = cisla_rocniku(context["rocnik"])
|
||||||
context['radky_vysledkovky'] = vysledkovka_rocniku(context["rocnik"])
|
context['radky_vysledkovky'] = vysledkovka_rocniku(context["rocnik"])
|
||||||
context['hlavni_problemy_v_rocniku'] = hlavni_problemy_rocniku(context["rocnik"])
|
context['hlavni_problemy_v_rocniku'] = hlavni_problemy_f(problemy_rocniku(context["rocnik"]))
|
||||||
end = time.time()
|
end = time.time()
|
||||||
print("Kontext:", end-start)
|
print("Kontext:", end-start)
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import seminar.models as m
|
import seminar.models as m
|
||||||
from django.db.models import Q, Sum, Count
|
from django.db.models import Q, Sum, Count
|
||||||
from seminar.utils import aktivniResitele, resi_v_rocniku, cisla_rocniku, hlavni_problemy_rocniku, hlavni_problem, hlavni_problemy_cisla, problemy_cisla, podproblemy_v_cislu
|
from seminar.utils import aktivniResitele, resi_v_rocniku, cisla_rocniku, hlavni_problem, hlavni_problemy_f, problemy_cisla, podproblemy_v_cislu
|
||||||
import time
|
import time
|
||||||
### Výsledky
|
### Výsledky
|
||||||
|
|
||||||
|
@ -239,7 +239,7 @@ def secti_body_za_cislo(cislo, aktivni_resitele, hlavni_problemy=None):
|
||||||
print("Scitam cislo",cislo)
|
print("Scitam cislo",cislo)
|
||||||
|
|
||||||
if hlavni_problemy is None:
|
if hlavni_problemy is None:
|
||||||
hlavni_problemy = hlavni_problemy_cisla(cislo)
|
hlavni_problemy = hlavni_problemy_f(problemy_cisla(cislo))
|
||||||
|
|
||||||
def ne_clanek_ne_konfera(problem):
|
def ne_clanek_ne_konfera(problem):
|
||||||
inst = problem.get_real_instance()
|
inst = problem.get_real_instance()
|
||||||
|
@ -300,7 +300,7 @@ def secti_body_za_cislo(cislo, aktivni_resitele, hlavni_problemy=None):
|
||||||
def secti_body_za_cislo_podle_temat(cislo, aktivni_resitele, podproblemy=None, temata=None):
|
def secti_body_za_cislo_podle_temat(cislo, aktivni_resitele, podproblemy=None, temata=None):
|
||||||
""" Spočítá u řešitelů body za číslo za úlohy v jednotlivých hlavních problémech (témata)."""
|
""" Spočítá u řešitelů body za číslo za úlohy v jednotlivých hlavních problémech (témata)."""
|
||||||
if temata is None:
|
if temata is None:
|
||||||
temata = hlavni_problemy_cisla(cislo)
|
temata = hlavni_problemy_f(problemy_cisla(cislo))
|
||||||
|
|
||||||
if podproblemy is None:
|
if podproblemy is None:
|
||||||
podproblemy_v_cislu(cislo, hlavni_problemy=temata)
|
podproblemy_v_cislu(cislo, hlavni_problemy=temata)
|
||||||
|
@ -370,7 +370,7 @@ def vysledkovka_cisla(cislo, context=None):
|
||||||
if context is None:
|
if context is None:
|
||||||
context = {}
|
context = {}
|
||||||
problemy = problemy_cisla(cislo)
|
problemy = problemy_cisla(cislo)
|
||||||
hlavni_problemy = hlavni_problemy_cisla(cislo, problemy)
|
hlavni_problemy = hlavni_problemy_f(problemy)
|
||||||
## TODO možná chytřeji vybírat aktivní řešitele
|
## TODO možná chytřeji vybírat aktivní řešitele
|
||||||
# aktivní řešitelé - chceme letos něco poslal, TODO později vyfiltrujeme ty, kdo mají
|
# aktivní řešitelé - chceme letos něco poslal, TODO později vyfiltrujeme ty, kdo mají
|
||||||
# u alespoň jedné hodnoty něco jiného než NULL
|
# u alespoň jedné hodnoty něco jiného než NULL
|
||||||
|
|
Loading…
Reference in a new issue