From 2c7efac25634d0175c23742e3c241bcc1dd3a72b Mon Sep 17 00:00:00 2001 From: Jiri Kalvoda <jirikalvoda@kam.mff.cuni.cz> Date: Fri, 24 Sep 2021 17:49:37 +0200 Subject: [PATCH] =?UTF-8?q?P=C5=99esunut=C3=AD=20mo.web.org=5Fround.MODate?= =?UTF-8?q?TimeField=20na=20mo.web.fields.DateTime?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mo/web/fields.py | 15 +++++++++++++++ mo/web/org_round.py | 24 ++++-------------------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/mo/web/fields.py b/mo/web/fields.py index ca8454f2..c3d70a10 100644 --- a/mo/web/fields.py +++ b/mo/web/fields.py @@ -186,3 +186,18 @@ class RepeatPassword(wtforms.PasswordField): def pre_validate(field, form): if field.data != form.new_passwd.data: raise wtforms.ValidationError('Hesla se neshodují.') + + +class DateTime(wtforms.DateTimeField): + def __init__(self, label, format='%Y-%m-%d %H:%M', description='Ve formátu 2000-01-01 12:34', **kwargs): + super().__init__(label, format=format, description=description, **kwargs) + + def process_data(self, valuelist): + super().process_data(valuelist) + if self.data is not None: + self.data = self.data.astimezone() + + def process_formdata(self, valuelist): + super().process_formdata(valuelist) + if self.data is not None: + self.data = self.data.astimezone() diff --git a/mo/web/org_round.py b/mo/web/org_round.py index 45cbba7b..a211d6ad 100644 --- a/mo/web/org_round.py +++ b/mo/web/org_round.py @@ -419,22 +419,6 @@ def org_round_import(id: int): return generic_import(round, master_round, None, None) -class MODateTimeField(wtforms.DateTimeField): - - def __init__(self, label, format='%Y-%m-%d %H:%M', description='Ve formátu 2000-01-01 12:34', **kwargs): - super().__init__(label, format=format, description=description, **kwargs) - - def process_data(self, valuelist): - super().process_data(valuelist) - if self.data is not None: - self.data = self.data.astimezone() - - def process_formdata(self, valuelist): - super().process_formdata(valuelist) - if self.data is not None: - self.data = self.data.astimezone() - - class RoundEditForm(FlaskForm): _for_round: Optional[db.Round] = None @@ -445,10 +429,10 @@ class RoundEditForm(FlaskForm): ) # Only the desktop Firefox does not support datetime-local field nowadays, # other browsers does provide date and time picker UI :( - ct_tasks_start = MODateTimeField("Čas zveřejnění úloh pro účastníky", validators=[validators.Optional()]) - pr_tasks_start = MODateTimeField("Čas zveřejnění úloh pro dozor", validators=[validators.Optional()]) - ct_submit_end = MODateTimeField("Konec odevzdávání pro účastníky", validators=[validators.Optional()]) - pr_submit_end = MODateTimeField("Konec odevzdávání pro dozor", validators=[validators.Optional()]) + ct_tasks_start = mo_fields.DateTime("Čas zveřejnění úloh pro účastníky", validators=[validators.Optional()]) + pr_tasks_start = mo_fields.DateTime("Čas zveřejnění úloh pro dozor", validators=[validators.Optional()]) + ct_submit_end = mo_fields.DateTime("Konec odevzdávání pro účastníky", validators=[validators.Optional()]) + pr_submit_end = mo_fields.DateTime("Konec odevzdávání pro dozor", validators=[validators.Optional()]) score_mode = wtforms.SelectField("Výsledková listina", choices=db.RoundScoreMode.choices(), coerce=db.RoundScoreMode.coerce) score_winner_limit = mo_fields.Points( "Hranice bodů pro vítěze", validators=[validators.Optional(), validators.NumberRange(min=0)], -- GitLab