|
5 | 5 | # modify it under the terms of the MIT License; see the |
6 | 6 | # LICENSE file for more details. |
7 | 7 |
|
| 8 | +from datetime import datetime |
| 9 | + |
8 | 10 | from wtforms.fields import BooleanField, TextAreaField |
9 | | -from wtforms.validators import DataRequired |
| 11 | +from wtforms.validators import DataRequired, Optional |
10 | 12 |
|
| 13 | +from indico.util.date_time import server_to_utc |
11 | 14 | from indico.util.i18n import _ |
12 | 15 | from indico.web.forms.base import IndicoForm |
13 | | -from indico.web.forms.validators import UsedIf |
| 16 | +from indico.web.forms.fields.datetime import IndicoDateTimeField |
| 17 | +from indico.web.forms.validators import DateTimeRange, LinkedDateTime, UsedIf |
14 | 18 | from indico.web.forms.widgets import SwitchWidget |
15 | 19 |
|
16 | 20 |
|
17 | 21 | class AnnouncementForm(IndicoForm): |
18 | 22 | enabled = BooleanField(_('Enabled'), widget=SwitchWidget()) |
19 | 23 | message = TextAreaField(_('Message'), [UsedIf(lambda form, _: form.enabled.data), DataRequired()], |
20 | 24 | description=_('You may use Markdown and basic HTML elements for formatting.')) |
| 25 | + |
| 26 | + test_start_dt = IndicoDateTimeField('Start', [DataRequired(), |
| 27 | + DateTimeRange(earliest=server_to_utc(datetime(2025, 4, 5)), |
| 28 | + latest=server_to_utc(datetime(2025, 5, 20)))]) |
| 29 | + test_end_dt = IndicoDateTimeField('End', [Optional(), LinkedDateTime('test_start_dt'), |
| 30 | + DateTimeRange(earliest=None, |
| 31 | + latest=server_to_utc(datetime(2025, 6, 20, 15)))], |
| 32 | + allow_clear=True) |
0 commit comments