Aktualizace přidávátka úloh a problémů (desetinná čísla a číslo místo dílu)

This commit is contained in:
Jonas Havelka 2025-02-09 22:46:29 +01:00
parent 0a58751155
commit 955dd60235

View file

@ -27,7 +27,7 @@ class HromadnePridaniForm(Form):
""" Formulář pro hromadné přidání úložek a problémů """ """ Formulář pro hromadné přidání úložek a problémů """
tema = CharField(label="Název tématu:") tema = CharField(label="Název tématu:")
dil = IntegerField(label="Díl:", min_value=1) cislo = IntegerField(label="Číslo:", min_value=1)
body = CharField(label="Počty bodů (0 pro problém) oddělené čárkami:") body = CharField(label="Počty bodů (0 pro problém) oddělené čárkami:")
def clean_tema(self): def clean_tema(self):
@ -41,7 +41,7 @@ class HromadnePridaniForm(Form):
def clean_body(self): def clean_body(self):
""" Kontrola, že `body` je seznam čísel """ """ Kontrola, že `body` je seznam čísel """
try: try:
list(map(int, self.cleaned_data["body"].split(","))) list(map(float, self.cleaned_data["body"].split(",")))
except ValueError: except ValueError:
raise ValidationError("Špatný formát bodů") raise ValidationError("Špatný formát bodů")
return self.cleaned_data['body'] return self.cleaned_data['body']
@ -64,21 +64,21 @@ class HromadnePridaniView(FormView):
""" Upravený Pavlův skript na hromadné přidání úložek a problémů. """ """ Upravený Pavlův skript na hromadné přidání úložek a problémů. """
cd = form.cleaned_data cd = form.cleaned_data
tema = cd["tema"] tema = cd["tema"]
dil = cd["dil"] cislo = cd["cislo"]
body = list(map(int, cd["body"].split(","))) body = list(map(float, cd["body"].split(",")))
t = Problem.objects.get(nazev__exact=tema, nadproblem=None) t = Problem.objects.get(nazev__exact=tema, nadproblem=None)
with transaction.atomic(): with transaction.atomic():
pfx = f"{t.nazev}, díl {dil}, " pfx = f"{t.nazev}, "
for k, b in enumerate(body, 1): for k, b in enumerate(body, 1):
u = Uloha.objects.create( u = Uloha.objects.create(
nadproblem=t, nadproblem=t,
nazev=pfx + f"{'úloha' if b > 0 else 'problém'} {k}", nazev=pfx + f"{'úloha' if b > 0 else 'problém'} {cislo}.{k}",
autor=t.autor, autor=t.autor,
garant=t.garant, garant=t.garant,
max_body=b, max_body=b,
cislo_zadani=Cislo.get(t.rocnik.rocnik, dil), cislo_zadani=Cislo.get(t.rocnik.rocnik, cislo),
kod=k, kod=k,
stav=Problem.STAV_ZADANY, stav=Problem.STAV_ZADANY,
) )