Skip to content
Snippets Groups Projects

Formulářová políčka; Přidání účastníka do soutěže; Editace registrace do ročníku

Files

+ 8
19
@@ -20,20 +20,7 @@ class OptionalInt(wtforms.IntegerField):
raise wtforms.ValidationError(self.gettext('Nejedná se o číslo'))
class CustomStringField(wtforms.StringField):
"""Umožnuje přidávat vykreslovací argumenty dřív než při generování html"""
field_args: Dict[str, Any]
def __init__(self, label="", validators=None, **kwargs):
super().__init__(label, validators, **kwargs)
self.field_args = dict()
def __call__(field, **kwargs):
kwargs.update(field.field_args)
return super().__call__(**kwargs)
class Email(CustomStringField):
class Email(wtforms.StringField):
def __init__(self, label="E-mail", validators=None, **kwargs):
super().__init__(label, validators, **kwargs)
@@ -45,7 +32,7 @@ class Email(CustomStringField):
raise wtforms.ValidationError(str(e))
class Grade(CustomStringField):
class Grade(wtforms.StringField):
"""Pro validaci hledá ve formuláři form.school a podle ní rozlišuje SŠ a ZŠ """
default_description = "Pro základní školy je to číslo od 1 do 9, pro <var>k</var>-tý ročník <var>r</var>-leté střední školy má formát <var>k</var>/<var>r</var>."
validate_grade = True
@@ -71,11 +58,13 @@ class BirthYear(OptionalInt):
def pre_validate(field, form):
if field.data is not None:
r: int = field.data
if r < 2000 or r > 2099:
raise wtforms.ValidationError('Rok narození musí být v intervalu [2000,2099]')
try:
mo.users.validate_born_year(r)
except mo.CheckError as e:
raise wtforms.ValidationError(str(e))
class Name(CustomStringField):
class Name(wtforms.StringField):
def pre_validate(field, form):
# XXX: Tato kontrola úmyslně není striktní, aby prošla i jména jako 'de Beer'
if field.data:
@@ -95,7 +84,7 @@ class LastName(Name):
super().__init__(label, validators, **kwargs)
class Place(CustomStringField):
class Place(wtforms.StringField):
def __init__(self, label="Místo", validators=None, **kwargs):
super().__init__(label, validators, **kwargs)
Loading