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 django.core.exceptions import ValidationError
|
||||
from django.db import transaction
|
||||
from django.forms import Form, CharField, IntegerField
|
||||
from django.views.generic import FormView
|
||||
|
@ -21,28 +22,44 @@ def problemView(request, pk):
|
|||
|
||||
|
||||
# FIXME Tohle možná patří do forms.py
|
||||
# FIXME Tohle není odladěné, selhává to nekontrolovaně
|
||||
# a obecně je to fujky nekomentovaný kód
|
||||
# FIXME Chyby se ve formuláři zobrazují nějak divně
|
||||
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)
|
||||
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):
|
||||
""" View pro hromadné přidání úložek a problémů """
|
||||
form_class = HromadnePridaniForm
|
||||
template_name = "generic_form.html"
|
||||
success_url = 'hromadne_pridani'
|
||||
|
||||
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["nadpis"] = "Hromadné přidání úloh"
|
||||
context["form_url"] = "hromadne_pridani"
|
||||
return context
|
||||
|
||||
def form_valid(self, form):
|
||||
""" Upravený Pavlův skript na hromadné přidání úložek a problémů. """
|
||||
cd = form.cleaned_data
|
||||
tema = cd["tema"]
|
||||
dil = cd["dil"]
|
||||
|
|
Loading…
Reference in a new issue