0001-manager-redirect-day-view-to-last-day-of-month-when-.patch
chrono/manager/views.py | ||
---|---|---|
205 | 205 | |
206 | 206 |
# specify 6am time to get the expected timezone on daylight saving time |
207 | 207 |
# days. |
208 |
self.date = make_aware(datetime.datetime.strptime( |
|
209 |
'%s-%s-%s 06:00' % (self.get_year(), self.get_month(), self.get_day()), |
|
210 |
'%Y-%m-%d %H:%M')) |
|
208 |
try: |
|
209 |
self.date = make_aware(datetime.datetime.strptime( |
|
210 |
'%s-%s-%s 06:00' % (self.get_year(), self.get_month(), self.get_day()), |
|
211 |
'%Y-%m-%d %H:%M')) |
|
212 |
except ValueError: # day is out of range for month |
|
213 |
# redirect to last day of month |
|
214 |
date = datetime.date(int(self.get_year()), int(self.get_month()), 1) |
|
215 |
date += datetime.timedelta(days=40) |
|
216 |
date = date.replace(day=1) |
|
217 |
date -= datetime.timedelta(days=1) |
|
218 |
return HttpResponseRedirect(reverse('chrono-manager-agenda-day-view', |
|
219 |
kwargs={'pk': self.agenda.id, |
|
220 |
'year': date.year, |
|
221 |
'month': date.month, |
|
222 |
'day': date.day})) |
|
211 | 223 |
return super(AgendaDateView, self).dispatch(request, *args, **kwargs) |
212 | 224 | |
213 | 225 |
def get_context_data(self, **kwargs): |
tests/test_manager.py | ||
---|---|---|
1372 | 1372 |
assert resp.text.count('<tr') == 15 |
1373 | 1373 |
assert '<th class="hour">11 p.m.</th>' in resp.text |
1374 | 1374 | |
1375 |
def test_agenda_invalid_day_view(app, admin_user, manager_user, api_user): |
|
1376 |
agenda = Agenda.objects.create(label='New Example', kind='meetings') |
|
1377 |
desk = Desk.objects.create(agenda=agenda, label='New Desk') |
|
1378 |
desk.save() |
|
1379 | ||
1380 |
meetingtype = MeetingType(agenda=agenda, label='Bar', duration=30) |
|
1381 |
meetingtype.save() |
|
1382 | ||
1383 |
login(app) |
|
1384 |
resp = app.get('/manage/agendas/%s/%d/%d/%d/' % (agenda.id, 2018, 11, 31), status=302) |
|
1385 |
assert resp.location.endswith('2018/11/30/') |
|
1386 | ||
1375 | 1387 |
def test_agenda_month_view(app, admin_user, manager_user, api_user): |
1376 | 1388 |
agenda = Agenda.objects.create(label='Passeports', kind='meetings') |
1377 | 1389 |
desk = Desk.objects.create(agenda=agenda, label='Desk A') |
1378 |
- |