Chytání chyb v hromadném přidání. Také přidány komentáře.
This commit is contained in:
parent
6dcd53b68f
commit
769a6d2dee
1 changed files with 21 additions and 4 deletions
|
@ -1,5 +1,6 @@
|
||||||
from http import HTTPStatus
|
from http import HTTPStatus
|
||||||
|
|
||||||
|
from django.core.exceptions import ValidationError
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
from django.forms import Form, CharField, IntegerField
|
from django.forms import Form, CharField, IntegerField
|
||||||
from django.views.generic import FormView
|
from django.views.generic import FormView
|
||||||
|
@ -21,28 +22,44 @@ def problemView(request, pk):
|
||||||
|
|
||||||
|
|
||||||
# FIXME Tohle možná patří do forms.py
|
# FIXME Tohle možná patří do forms.py
|
||||||
# FIXME Tohle není odladěné, selhává to nekontrolovaně
|
# FIXME Chyby se ve formuláři zobrazují nějak divně
|
||||||
# a obecně je to fujky nekomentovaný kód
|
|
||||||
class HromadnePridaniForm(Form):
|
class HromadnePridaniForm(Form):
|
||||||
|
""" 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)
|
dil = IntegerField(label="Díl:", 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):
|
||||||
|
""" Kontrola, že `tema` je název právě jednoho tématu """
|
||||||
|
if m.Tema.objects.filter(
|
||||||
|
nazev__exact=self.cleaned_data['tema'],
|
||||||
|
nadproblem=None).count() != 1:
|
||||||
|
raise ValidationError("Špatný nebo nepřesně zadaný název témátka")
|
||||||
|
|
||||||
|
def clean_body(self):
|
||||||
|
""" Kontrola, že `body` je seznam čísel """
|
||||||
|
try:
|
||||||
|
list(map(int, self.cleaned_data["body"].split(",")))
|
||||||
|
except ValueError:
|
||||||
|
raise ValidationError("Špatný formát bodů")
|
||||||
|
|
||||||
|
|
||||||
# FIXME Tohle není odladěné, selhává to nekontrolovaně
|
|
||||||
# a obecně je to fujky nekomentovaný kód
|
|
||||||
class HromadnePridaniView(FormView):
|
class HromadnePridaniView(FormView):
|
||||||
|
""" View pro hromadné přidání úložek a problémů """
|
||||||
form_class = HromadnePridaniForm
|
form_class = HromadnePridaniForm
|
||||||
template_name = "generic_form.html"
|
template_name = "generic_form.html"
|
||||||
success_url = 'hromadne_pridani'
|
success_url = 'hromadne_pridani'
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
|
""" Přidání nadpisu stránky a url, kam se má poslat formulář. """
|
||||||
context = super().get_context_data()
|
context = super().get_context_data()
|
||||||
context["nadpis"] = "Hromadné přidání úloh"
|
context["nadpis"] = "Hromadné přidání úloh"
|
||||||
context["form_url"] = "hromadne_pridani"
|
context["form_url"] = "hromadne_pridani"
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def form_valid(self, form):
|
def form_valid(self, form):
|
||||||
|
""" 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"]
|
dil = cd["dil"]
|
||||||
|
|
Loading…
Reference in a new issue