From 37e237305b48c567e1ca9eb9368db81fd8038700 Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Tue, 16 Nov 2021 23:00:47 +0100
Subject: [PATCH] =?UTF-8?q?Ve=20v=C5=A1ech=20formul=C3=A1=C5=99=C3=ADch=20?=
 =?UTF-8?q?pou=C5=BE=C3=ADv=C3=A1me=20o=C5=99ez=C3=A1vac=C3=AD=20stringov?=
 =?UTF-8?q?=C3=A1=20pole?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Výjimku činím v případě read-only polí, tam není ořez třeba.
---
 mo/web/acct.py        |  7 +++----
 mo/web/org_contest.py |  2 +-
 mo/web/org_place.py   | 16 ++++++++--------
 mo/web/org_round.py   | 10 +++++-----
 mo/web/org_users.py   | 12 ++++++------
 5 files changed, 23 insertions(+), 24 deletions(-)

diff --git a/mo/web/acct.py b/mo/web/acct.py
index cd3bc74e..83e42a4e 100644
--- a/mo/web/acct.py
+++ b/mo/web/acct.py
@@ -13,7 +13,6 @@ from typing import Optional, Dict
 import werkzeug.exceptions
 import wtforms
 from wtforms import validators, ValidationError
-from wtforms.fields.html5 import EmailField
 
 import mo.config as config
 import mo.db as db
@@ -28,7 +27,7 @@ import mo.web.fields as mo_fields
 class LoginForm(FlaskForm):
     next = wtforms.HiddenField()
     email = mo_fields.Email(validators=[validators.DataRequired()])
-    passwd = wtforms.PasswordField('Heslo')
+    passwd = mo_fields.Password('Heslo')
     submit = wtforms.SubmitField('Přihlásit se')
     reset = wtforms.SubmitField('Zapomenuté heslo')
 
@@ -127,7 +126,7 @@ def user_settings():
 
 class SettingsForm(FlaskForm):
     email = mo_fields.Email(validators=[validators.DataRequired()])
-    current_passwd = wtforms.PasswordField('Aktuální heslo', validators=[validators.DataRequired()])
+    current_passwd = mo_fields.Password('Aktuální heslo', validators=[validators.DataRequired()])
     new_passwd = mo_fields.NewPassword(
         description=mo.users.password_help + ' Pokud nechcete heslo měnit, ponechte toto políčko prázdné.',
     )
@@ -354,7 +353,7 @@ class Reg1:
 class Reg1Form(FlaskForm):
     email = mo_fields.Email(validators=[validators.DataRequired()])
     token = wtforms.HiddenField()
-    captcha = wtforms.StringField('Kontrolní odpověď', validators=[validators.DataRequired()])
+    captcha = mo_fields.String('Kontrolní odpověď', validators=[validators.DataRequired()])
     submit = wtforms.SubmitField('Vytvořit účet')
 
 
diff --git a/mo/web/org_contest.py b/mo/web/org_contest.py
index 6ad6f10a..bc75918e 100644
--- a/mo/web/org_contest.py
+++ b/mo/web/org_contest.py
@@ -664,7 +664,7 @@ class SubmitForm(FlaskForm):
 
 
 class SetFinalForm(FlaskForm):
-    type = wtforms.StringField()
+    type = mo_fields.String()
     paper_id = wtforms.IntegerField()
     submit_final = wtforms.SubmitField("Prohlásit za finální")
 
diff --git a/mo/web/org_place.py b/mo/web/org_place.py
index dbe2a9a6..bf911da6 100644
--- a/mo/web/org_place.py
+++ b/mo/web/org_place.py
@@ -50,30 +50,30 @@ def org_place(id: int):
 
 
 class PlaceEditForm(FlaskForm):
-    name = wtforms.StringField(
+    name = mo_fields.String(
         'Název', render_kw={'autofocus': True},
         validators=[validators.DataRequired()]
     )
-    code = wtforms.StringField(
+    code = mo_fields.String(
         'Kód', filters=[lambda x: x or None],  # may be NULL in db
         description="Na místo se lze odkazovat kódem z písmen a číslic."
     )
     type = wtforms.SelectField(
         'Typ', choices=db.PlaceType.choices(), coerce=db.PlaceType.coerce
     )
-    nuts = wtforms.StringField(
+    nuts = mo_fields.String(
         'NUTS', filters=[lambda x: x or None],  # may be NULL in db
         description="Pro okresy a výše"
     )
-    note = wtforms.StringField('Poznámka')
+    note = mo_fields.String('Poznámka')
     submit = wtforms.SubmitField('Uložit')
 
 
 class PlaceSchoolEditForm(PlaceEditForm):
-    red_izo = wtforms.StringField('RED_IZO')
-    ico = wtforms.StringField('IČO')
-    official_name = wtforms.StringField('Oficiální název')
-    address = wtforms.StringField('Adresa')
+    red_izo = mo_fields.String('RED_IZO')
+    ico = mo_fields.String('IČO')
+    official_name = mo_fields.String('Oficiální název')
+    address = mo_fields.String('Adresa')
     is_zs = wtforms.BooleanField('ZŠ')
     is_ss = wtforms.BooleanField('SŠ')
     submit = wtforms.SubmitField('Uložit')
diff --git a/mo/web/org_round.py b/mo/web/org_round.py
index 88da8505..cfb9fcc7 100644
--- a/mo/web/org_round.py
+++ b/mo/web/org_round.py
@@ -251,11 +251,11 @@ def org_round(id: int):
 
 
 class TaskEditForm(FlaskForm):
-    code = wtforms.StringField('Kód úlohy', validators=[
+    code = mo_fields.String('Kód úlohy', validators=[
         validators.Required(),
         validators.Regexp(r'^[A-Za-z0-9-]+$', message="Kód úlohy smí obsahovat jen nediakritická písmena, čísla a znak -"),
     ], render_kw={'autofocus': True})
-    name = wtforms.StringField('Název úlohy')
+    name = mo_fields.String('Název úlohy')
     max_points = mo_fields.Points(
         'Maximum bodů', validators=[validators.Optional(), validators.NumberRange(min=0)],
         description="Při nastavení maxima nelze udělit více bodů, pro zrušení uložte prázdnou hodnotu",
@@ -419,7 +419,7 @@ def org_round_import(id: int):
 class RoundEditForm(FlaskForm):
     _for_round: Optional[db.Round] = None
 
-    name = wtforms.StringField("Název", render_kw={'autofocus': True})
+    name = mo_fields.String("Název", render_kw={'autofocus': True})
     state = wtforms.SelectField(
         "Stav kola", choices=db.RoundState.choices(), coerce=db.RoundState.coerce,
         description="Stav soutěží ve všech oblastech kola. Pokud zvolíme 'po oblastech', každá soutěž si svůj stav určuje sama.",
@@ -444,7 +444,7 @@ class RoundEditForm(FlaskForm):
         description="Ovlivňuje možnost zadávání nových bodů, již uložené body nezmění"
     )
     enroll_mode = wtforms.SelectField("Režim přihlašování", choices=db.RoundEnrollMode.choices(), coerce=db.RoundEnrollMode.coerce)
-    enroll_advert = wtforms.StringField("Popis v přihlášce")
+    enroll_advert = mo_fields.String("Popis v přihlášce")
     has_messages = wtforms.BooleanField("Zprávičky pro účastníky (aktivuje možnost vytvářet novinky zobrazované účastníkům)")
     submit = wtforms.SubmitField('Uložit')
 
@@ -590,7 +590,7 @@ def org_edit_statement(id: int):
 
 
 class MessageAddForm(FlaskForm):
-    title = wtforms.StringField('Nadpis', validators=[validators.Required()])
+    title = mo_fields.String('Nadpis', validators=[validators.Required()])
     markdown = wtforms.TextAreaField(
         'Text zprávičky', description='Zprávičky lze formátovat pomocí Markdownu',
         validators=[validators.Required()],
diff --git a/mo/web/org_users.py b/mo/web/org_users.py
index b0913ee5..6c62b42d 100644
--- a/mo/web/org_users.py
+++ b/mo/web/org_users.py
@@ -25,8 +25,8 @@ from mo.web.util import PagerForm
 
 class UsersFilterForm(PagerForm):
     # user
-    search_name = wtforms.TextField("Jméno/příjmení", render_kw={'autofocus': True})
-    search_email = wtforms.TextField("E-mail")
+    search_name = mo_fields.String("Jméno/příjmení", render_kw={'autofocus': True})
+    search_email = mo_fields.String("E-mail")
 
     # participants
     year = mo_fields.OptionalInt("Ročník")
@@ -122,15 +122,15 @@ def org_users():
 
 class OrgsFilterForm(PagerForm):
     # user
-    search_name = wtforms.TextField("Jméno/příjmení", render_kw={'autofocus': True})
-    search_email = wtforms.TextField("E-mail")
+    search_name = mo_fields.String("Jméno/příjmení", render_kw={'autofocus': True})
+    search_email = mo_fields.String("E-mail")
 
     search_role = wtforms.SelectMultipleField('Role', choices=db.RoleType.choices(), coerce=db.RoleType.coerce, validators=[validators.Optional()])
     search_right_for_place = mo_fields.Place('Právo pro oblast', validators=[validators.Optional()])
     search_in_place = mo_fields.Place('V oblasti', validators=[validators.Optional()])
     search_place_level = wtforms.SelectMultipleField("Úroveň oblasti", choices=[(i.level, i.name) for i in db.place_levels], validators=[validators.Optional()], coerce=int)
     search_year = mo_fields.IntList('Ročník', validators=[validators.Optional()])
-    search_category = wtforms.StringField("Kategorie", validators=[validators.Optional()])
+    search_category = mo_fields.String("Kategorie", validators=[validators.Optional()])
     search_seq = mo_fields.IntList("Kolo", validators=[validators.Optional()])
 
     submit = wtforms.SubmitField("Filtrovat")
@@ -229,7 +229,7 @@ class FormAddRole(FlaskForm):
     role = wtforms.SelectField('Role', choices=db.RoleType.choices(), coerce=db.RoleType.coerce, render_kw={'autofocus': True})
     place = mo_fields.Place()
     year = wtforms.IntegerField('Ročník', validators=[validators.Optional()])
-    category = wtforms.StringField("Kategorie", validators=[validators.Length(max=2)], filters=[lambda x: x or None])
+    category = mo_fields.String("Kategorie", validators=[validators.Length(max=2)], filters=[lambda x: x or None])
     seq = wtforms.IntegerField("Kolo", validators=[validators.Optional()])
 
     submit = wtforms.SubmitField('Přidat roli')
-- 
GitLab