Browse Source

Nové kódy úloh ve výsledkovce

(Zprasený commit, má být na jiné větvi, já vím :-D)
pull/36/head
MaM Web user 1 year ago
parent
commit
f14df7b579
  1. 17
      seminar/models/tvorba.py
  2. 8
      vysledkovky/utils.py

17
seminar/models/tvorba.py

@ -491,7 +491,7 @@ class Problem(SeminarModelBase,PolymorphicModel):
return self.nadproblem.kod_v_rocniku+".{}".format(self.kod) return self.nadproblem.kod_v_rocniku+".{}".format(self.kod)
return str(self.kod) return str(self.kod)
logger.warning(f"K problému {self} byl vyžadován kód v ročníku, i když není zadaný ani vyřešený.") logger.warning(f"K problému {self} byl vyžadován kód v ročníku, i když není zadaný ani vyřešený.")
return '<Není zadaný>' return f'<Není zadaný: {self.kod}>'
# def verejne(self): # def verejne(self):
# # aktuálně podle stavu problému # # aktuálně podle stavu problému
@ -571,9 +571,9 @@ class Tema(Problem):
if self.stav == Problem.STAV_ZADANY or self.stav == Problem.STAV_VYRESENY: if self.stav == Problem.STAV_ZADANY or self.stav == Problem.STAV_VYRESENY:
if self.nadproblem: if self.nadproblem:
return self.nadproblem.kod_v_rocniku+".t{}".format(self.kod) return self.nadproblem.kod_v_rocniku+".t{}".format(self.kod)
return "t{}".format(self.kod) return 't'+self.kod
logger.warning(f"K problému {self} byl vyžadován kód v ročníku, i když není zadaný ani vyřešený.") logger.warning(f"K problému {self} byl vyžadován kód v ročníku, i když není zadaný ani vyřešený.")
return '<Není zadaný>' return f'<Není zadaný: {self.kod}>'
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
super().save(*args, **kwargs) super().save(*args, **kwargs)
@ -607,9 +607,9 @@ class Clanek(Problem):
# Nemělo by být potřeba # Nemělo by být potřeba
# if self.nadproblem: # if self.nadproblem:
# return self.nadproblem.kod_v_rocniku+".c{}".format(self.kod) # return self.nadproblem.kod_v_rocniku+".c{}".format(self.kod)
return "c{}".format(self.kod) return "c" + self.kod
logger.warning(f"K problému {self} byl vyžadován kód v ročníku, i když není zadaný ani vyřešený.") logger.warning(f"K problému {self} byl vyžadován kód v ročníku, i když není zadaný ani vyřešený.")
return '<Není zadaný>' return f'<Není zadaný: {self.kod}>'
def node(self): def node(self):
return None return None
@ -642,12 +642,9 @@ class Uloha(Problem):
@cached_property @cached_property
def kod_v_rocniku(self): def kod_v_rocniku(self):
if self.stav == Problem.STAV_ZADANY or self.stav == Problem.STAV_VYRESENY: if self.stav == Problem.STAV_ZADANY or self.stav == Problem.STAV_VYRESENY:
name="{}.u{}".format(self.cislo_zadani.poradi,self.kod) return f"{self.cislo_zadani.poradi}.{self.kod}"
if self.nadproblem:
return self.nadproblem.kod_v_rocniku+name
return name
logger.warning(f"K problému {self} byl vyžadován kód v ročníku, i když není zadaný ani vyřešený.") logger.warning(f"K problému {self} byl vyžadován kód v ročníku, i když není zadaný ani vyřešený.")
return '<Není zadaný>' return f'<Není zadaný: {self.kod}>'
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
super().save(*args, **kwargs) super().save(*args, **kwargs)

8
vysledkovky/utils.py

@ -257,7 +257,7 @@ class VysledkovkaCisla(Vysledkovka):
# (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()
for p in self.problemy: for p in self.problemy:
hlavni_problemy.add(p.hlavni_problem) hlavni_problemy.add(p.hlavni_problem) # FIXME: proč tohle nemůže obsahovat reálné instance? Ve výsledkovce by se pak zobrazovaly správné kódy…
# zunikátnění # zunikátnění
hlavni_problemy = list(hlavni_problemy) hlavni_problemy = list(hlavni_problemy)
@ -313,7 +313,7 @@ class VysledkovkaCisla(Vysledkovka):
# Sečteme hodnocení # Sečteme hodnocení
for hodnoceni in self.hodnoceni_do_cisla: for hodnoceni in self.hodnoceni_do_cisla:
prob = hodnoceni.problem prob = hodnoceni.problem.get_real_instance()
nadproblem = prob.hlavni_problem.id nadproblem = prob.hlavni_problem.id
# Když nadproblém není "téma", pak je "Ostatní" # Když nadproblém není "téma", pak je "Ostatní"
@ -366,9 +366,9 @@ class VysledkovkaCisla(Vysledkovka):
for problem in self.problemy: for problem in self.problemy:
h_problem = problem.hlavni_problem h_problem = problem.hlavni_problem
if h_problem in temata_a_spol: if h_problem in temata_a_spol:
podproblemy[h_problem.id].append(problem) podproblemy[h_problem.id].append(problem.get_real_instance())
else: else:
podproblemy[-1].append(problem) podproblemy[-1].append(problem.get_real_instance())
for podproblem in podproblemy.keys(): for podproblem in podproblemy.keys():
podproblemy[podproblem] = sorted(podproblemy[podproblem], key=lambda p: p.kod_v_rocniku) podproblemy[podproblem] = sorted(podproblemy[podproblem], key=lambda p: p.kod_v_rocniku)

Loading…
Cancel
Save