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ů """
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:")
def clean_tema(self):
@ -41,7 +41,7 @@ class HromadnePridaniForm(Form):
def clean_body(self):
""" Kontrola, že `body` je seznam čísel """
try:
list(map(int, self.cleaned_data["body"].split(",")))
list(map(float, self.cleaned_data["body"].split(",")))
except ValueError:
raise ValidationError("Špatný formát bodů")
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ů. """
cd = form.cleaned_data
tema = cd["tema"]
dil = cd["dil"]
body = list(map(int, cd["body"].split(",")))
cislo = cd["cislo"]
body = list(map(float, cd["body"].split(",")))
t = Problem.objects.get(nazev__exact=tema, nadproblem=None)
with transaction.atomic():
pfx = f"{t.nazev}, díl {dil}, "
pfx = f"{t.nazev}, "
for k, b in enumerate(body, 1):
u = Uloha.objects.create(
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,
garant=t.garant,
max_body=b,
cislo_zadani=Cislo.get(t.rocnik.rocnik, dil),
cislo_zadani=Cislo.get(t.rocnik.rocnik, cislo),
kod=k,
stav=Problem.STAV_ZADANY,
)