manager: forbid dates inferior to 2000 (#71558)
This commit is contained in:
parent
de0a37ba69
commit
414ba4c99c
|
@ -212,6 +212,12 @@ class NewEventForm(forms.ModelForm):
|
|||
self.cleaned_data['recurrence_days'] = None
|
||||
self.cleaned_data['recurrence_end_date'] = None
|
||||
|
||||
def clean_start_datetime(self):
|
||||
start_datetime = self.cleaned_data['start_datetime']
|
||||
if start_datetime.year < 2000:
|
||||
raise ValidationError(_('Year must be after 2000.'))
|
||||
return start_datetime
|
||||
|
||||
def clean_recurrence_days(self):
|
||||
recurrence_days = self.cleaned_data['recurrence_days']
|
||||
if recurrence_days == []:
|
||||
|
@ -896,6 +902,12 @@ class TimePeriodForm(TimePeriodFormBase, forms.ModelForm):
|
|||
del self.fields['repeat']
|
||||
del self.fields['weekday_indexes']
|
||||
|
||||
def clean_date(self):
|
||||
data = self.cleaned_data['date']
|
||||
if data.year < 2000:
|
||||
raise ValidationError(_('Year must be after 2000.'))
|
||||
return data
|
||||
|
||||
def save(self):
|
||||
super().save()
|
||||
|
||||
|
@ -995,6 +1007,10 @@ class TimePeriodExceptionForm(forms.ModelForm):
|
|||
def clean(self):
|
||||
cleaned_data = super().clean()
|
||||
|
||||
for date_field in ('start_datetime', 'end_datetime'):
|
||||
if date_field in cleaned_data and cleaned_data[date_field].year < 2000:
|
||||
self.add_error(date_field, _('Year must be after 2000.'))
|
||||
|
||||
if 'start_datetime' in cleaned_data and 'end_datetime' in cleaned_data:
|
||||
if cleaned_data['end_datetime'] <= cleaned_data['start_datetime']:
|
||||
self.add_error('end_datetime', _('End datetime must be greater than start datetime.'))
|
||||
|
|
|
@ -152,6 +152,23 @@ def test_add_event_as_manager(app, manager_user):
|
|||
assert event.end_datetime == event.start_datetime + datetime.timedelta(minutes=45)
|
||||
|
||||
|
||||
def test_add_event_third_millennium(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='Foo bar')
|
||||
Desk.objects.create(agenda=agenda, slug='_exceptions_holder')
|
||||
assert Event.objects.filter(agenda=agenda).count() == 0
|
||||
app = login(app)
|
||||
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
||||
assert '<h2>Settings' in resp.text
|
||||
resp = resp.click('New Event')
|
||||
resp.form['start_datetime_0'] = '0022-02-15'
|
||||
resp.form['start_datetime_1'] = '17:00'
|
||||
resp.form['places'] = 10
|
||||
resp.form['duration'] = 45
|
||||
resp = resp.form.submit()
|
||||
assert resp.context['form'].errors['start_datetime'] == ['Year must be after 2000.']
|
||||
assert Event.objects.filter(agenda=agenda).count() == 0
|
||||
|
||||
|
||||
def test_edit_event(settings, app, admin_user):
|
||||
settings.LANGUAGE_CODE = 'fr-fr' # check date initial value format
|
||||
agenda = Agenda.objects.create(label='Foo bar')
|
||||
|
|
|
@ -110,6 +110,24 @@ def test_meetings_agenda_add_time_period_exception(app, admin_user):
|
|||
assert 'Exception 2' in resp.text
|
||||
|
||||
|
||||
def test_meetings_agenda_add_time_period_exception_third_millennium(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
|
||||
desk = Desk.objects.create(agenda=agenda, label='Desk A')
|
||||
assert TimePeriodException.objects.filter(desk=desk).count() == 0
|
||||
app = login(app)
|
||||
resp = app.get('/manage/agendas/%s/settings' % agenda.pk)
|
||||
resp = resp.click('Add a time period exception', index=0)
|
||||
resp.form['label'] = 'Exception 1'
|
||||
resp.form['start_datetime_0'] = '0022-10-24'
|
||||
resp.form['start_datetime_1'] = '08:00'
|
||||
resp.form['end_datetime_0'] = '0022-10-24'
|
||||
resp.form['end_datetime_1'] = '16:00'
|
||||
resp = resp.form.submit()
|
||||
assert resp.context['form'].errors['start_datetime'] == ['Year must be after 2000.']
|
||||
assert resp.context['form'].errors['end_datetime'] == ['Year must be after 2000.']
|
||||
assert TimePeriodException.objects.filter(desk=desk).count() == 0
|
||||
|
||||
|
||||
def test_meetings_agenda_add_time_period_exception_booking_overlaps(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
|
||||
desk = Desk.objects.create(agenda=agenda, label='Desk A')
|
||||
|
|
|
@ -317,6 +317,23 @@ def test_meetings_agenda_date_time_period_desk_simple_management(app, admin_user
|
|||
assert TimePeriod.objects.count() == 0
|
||||
|
||||
|
||||
@pytest.mark.freeze_time('2022-10-24 10:00')
|
||||
def test_meetings_agenda_date_time_period_third_millennium(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='Foo bar', kind='meetings', desk_simple_management=True)
|
||||
desk = Desk.objects.create(agenda=agenda, label='Desk A')
|
||||
assert agenda.is_available_for_simple_management() is True
|
||||
assert TimePeriod.objects.filter(desk=desk).count() == 0
|
||||
|
||||
app = login(app)
|
||||
resp = app.get('/manage/agendas/%s/desk/%s/add-date-time-period' % (agenda.pk, desk.pk))
|
||||
resp.form['date'] = '0022-10-24'
|
||||
resp.form['start_time'] = '10:00'
|
||||
resp.form['end_time'] = '13:00'
|
||||
resp = resp.form.submit()
|
||||
assert resp.context['form'].errors['date'] == ['Year must be after 2000.']
|
||||
assert TimePeriod.objects.filter(desk=desk).count() == 0
|
||||
|
||||
|
||||
@pytest.mark.freeze_time('2022-10-23')
|
||||
def test_meetings_agenda_date_time_period_display(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='Foo bar', kind='meetings')
|
||||
|
|
Loading…
Reference in New Issue