0001-manager-forbid-dates-inferior-to-2000-71558.patch
chrono/manager/forms.py | ||
---|---|---|
212 | 212 |
self.cleaned_data['recurrence_days'] = None |
213 | 213 |
self.cleaned_data['recurrence_end_date'] = None |
214 | 214 | |
215 |
def clean_start_datetime(self): |
|
216 |
start_datetime = self.cleaned_data['start_datetime'] |
|
217 |
if start_datetime.year < 2000: |
|
218 |
raise ValidationError(_('Year must be superior to 2000.')) |
|
219 |
return start_datetime |
|
220 | ||
215 | 221 |
def clean_recurrence_days(self): |
216 | 222 |
recurrence_days = self.cleaned_data['recurrence_days'] |
217 | 223 |
if recurrence_days == []: |
... | ... | |
890 | 896 |
if self.instance.weekday_indexes: |
891 | 897 |
self.fields['repeat'].initial = 'custom' |
892 | 898 | |
899 |
def clean_date(self): |
|
900 |
data = self.cleaned_data['date'] |
|
901 |
if data.year < 2000: |
|
902 |
raise ValidationError(_('Year must be superior to 2000.')) |
|
903 |
return data |
|
904 | ||
893 | 905 |
def save(self): |
894 | 906 |
super().save() |
895 | 907 | |
... | ... | |
984 | 996 |
def clean(self): |
985 | 997 |
cleaned_data = super().clean() |
986 | 998 | |
999 |
for date_field in ('start_datetime', 'end_datetime'): |
|
1000 |
if date_field in cleaned_data and cleaned_data[date_field].year < 2000: |
|
1001 |
self.add_error(date_field, _('Year must be superior to 2000.')) |
|
1002 | ||
987 | 1003 |
if 'start_datetime' in cleaned_data and 'end_datetime' in cleaned_data: |
988 | 1004 |
if cleaned_data['end_datetime'] <= cleaned_data['start_datetime']: |
989 | 1005 |
self.add_error('end_datetime', _('End datetime must be greater than start datetime.')) |
tests/manager/test_event.py | ||
---|---|---|
152 | 152 |
assert event.end_datetime == event.start_datetime + datetime.timedelta(minutes=45) |
153 | 153 | |
154 | 154 | |
155 |
def test_add_event_third_millennium(app, admin_user): |
|
156 |
agenda = Agenda.objects.create(label='Foo bar') |
|
157 |
Desk.objects.create(agenda=agenda, slug='_exceptions_holder') |
|
158 |
assert Event.objects.filter(agenda=agenda).count() == 0 |
|
159 |
app = login(app) |
|
160 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk) |
|
161 |
assert '<h2>Settings' in resp.text |
|
162 |
resp = resp.click('New Event') |
|
163 |
resp.form['start_datetime_0'] = '0022-02-15' |
|
164 |
resp.form['start_datetime_1'] = '17:00' |
|
165 |
resp.form['places'] = 10 |
|
166 |
resp.form['duration'] = 45 |
|
167 |
resp = resp.form.submit() |
|
168 |
assert resp.context['form'].errors['start_datetime'] == ['Year must be superior to 2000.'] |
|
169 |
assert Event.objects.filter(agenda=agenda).count() == 0 |
|
170 | ||
171 | ||
155 | 172 |
def test_edit_event(settings, app, admin_user): |
156 | 173 |
settings.LANGUAGE_CODE = 'fr-fr' # check date initial value format |
157 | 174 |
agenda = Agenda.objects.create(label='Foo bar') |
tests/manager/test_exception.py | ||
---|---|---|
110 | 110 |
assert 'Exception 2' in resp.text |
111 | 111 | |
112 | 112 | |
113 |
def test_meetings_agenda_add_time_period_exception_third_millennium(app, admin_user): |
|
114 |
agenda = Agenda.objects.create(label='Foo bar', kind='meetings') |
|
115 |
desk = Desk.objects.create(agenda=agenda, label='Desk A') |
|
116 |
assert TimePeriodException.objects.filter(desk=desk).count() == 0 |
|
117 |
app = login(app) |
|
118 |
resp = app.get('/manage/agendas/%s/settings' % agenda.pk) |
|
119 |
resp = resp.click('Add a time period exception', index=0) |
|
120 |
resp.form['label'] = 'Exception 1' |
|
121 |
resp.form['start_datetime_0'] = '0022-10-24' |
|
122 |
resp.form['start_datetime_1'] = '08:00' |
|
123 |
resp.form['end_datetime_0'] = '0022-10-24' |
|
124 |
resp.form['end_datetime_1'] = '16:00' |
|
125 |
resp = resp.form.submit() |
|
126 |
assert resp.context['form'].errors['start_datetime'] == ['Year must be superior to 2000.'] |
|
127 |
assert resp.context['form'].errors['end_datetime'] == ['Year must be superior to 2000.'] |
|
128 |
assert TimePeriodException.objects.filter(desk=desk).count() == 0 |
|
129 | ||
130 | ||
113 | 131 |
def test_meetings_agenda_add_time_period_exception_booking_overlaps(app, admin_user): |
114 | 132 |
agenda = Agenda.objects.create(label='Foo bar', kind='meetings') |
115 | 133 |
desk = Desk.objects.create(agenda=agenda, label='Desk A') |
tests/manager/test_timeperiod.py | ||
---|---|---|
317 | 317 |
assert TimePeriod.objects.count() == 0 |
318 | 318 | |
319 | 319 | |
320 |
@pytest.mark.freeze_time('2022-10-24 10:00') |
|
321 |
def test_meetings_agenda_date_time_period_third_millennium(app, admin_user): |
|
322 |
agenda = Agenda.objects.create(label='Foo bar', kind='meetings', desk_simple_management=True) |
|
323 |
desk = Desk.objects.create(agenda=agenda, label='Desk A') |
|
324 |
assert agenda.is_available_for_simple_management() is True |
|
325 |
assert TimePeriod.objects.filter(desk=desk).count() == 0 |
|
326 | ||
327 |
app = login(app) |
|
328 |
resp = app.get('/manage/agendas/%s/desk/%s/add-date-time-period' % (agenda.pk, desk.pk)) |
|
329 |
resp.form['date'] = '0022-10-24' |
|
330 |
resp.form['start_time'] = '10:00' |
|
331 |
resp.form['end_time'] = '13:00' |
|
332 |
resp = resp.form.submit() |
|
333 |
assert resp.context['form'].errors['date'] == ['Year must be superior to 2000.'] |
|
334 |
assert TimePeriod.objects.filter(desk=desk).count() == 0 |
|
335 | ||
336 | ||
320 | 337 |
@pytest.mark.freeze_time('2022-10-23') |
321 | 338 |
def test_meetings_agenda_date_time_period_display(app, admin_user): |
322 | 339 |
agenda = Agenda.objects.create(label='Foo bar', kind='meetings') |
323 |
- |