manager: redirect day view to last day of month when out of range (#26455)
This commit is contained in:
parent
5f042b7ee5
commit
6b99e6e0d4
|
@ -205,9 +205,21 @@ class AgendaDateView(object):
|
|||
|
||||
# specify 6am time to get the expected timezone on daylight saving time
|
||||
# days.
|
||||
self.date = make_aware(datetime.datetime.strptime(
|
||||
'%s-%s-%s 06:00' % (self.get_year(), self.get_month(), self.get_day()),
|
||||
'%Y-%m-%d %H:%M'))
|
||||
try:
|
||||
self.date = make_aware(datetime.datetime.strptime(
|
||||
'%s-%s-%s 06:00' % (self.get_year(), self.get_month(), self.get_day()),
|
||||
'%Y-%m-%d %H:%M'))
|
||||
except ValueError: # day is out of range for month
|
||||
# redirect to last day of month
|
||||
date = datetime.date(int(self.get_year()), int(self.get_month()), 1)
|
||||
date += datetime.timedelta(days=40)
|
||||
date = date.replace(day=1)
|
||||
date -= datetime.timedelta(days=1)
|
||||
return HttpResponseRedirect(reverse('chrono-manager-agenda-day-view',
|
||||
kwargs={'pk': self.agenda.id,
|
||||
'year': date.year,
|
||||
'month': date.month,
|
||||
'day': date.day}))
|
||||
return super(AgendaDateView, self).dispatch(request, *args, **kwargs)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
|
|
|
@ -1372,6 +1372,18 @@ def test_agenda_day_view_late_meeting(app, admin_user, manager_user, api_user):
|
|||
assert resp.text.count('<tr') == 15
|
||||
assert '<th class="hour">11 p.m.</th>' in resp.text
|
||||
|
||||
def test_agenda_invalid_day_view(app, admin_user, manager_user, api_user):
|
||||
agenda = Agenda.objects.create(label='New Example', kind='meetings')
|
||||
desk = Desk.objects.create(agenda=agenda, label='New Desk')
|
||||
desk.save()
|
||||
|
||||
meetingtype = MeetingType(agenda=agenda, label='Bar', duration=30)
|
||||
meetingtype.save()
|
||||
|
||||
login(app)
|
||||
resp = app.get('/manage/agendas/%s/%d/%d/%d/' % (agenda.id, 2018, 11, 31), status=302)
|
||||
assert resp.location.endswith('2018/11/30/')
|
||||
|
||||
def test_agenda_month_view(app, admin_user, manager_user, api_user):
|
||||
agenda = Agenda.objects.create(label='Passeports', kind='meetings')
|
||||
desk = Desk.objects.create(agenda=agenda, label='Desk A')
|
||||
|
|
Loading…
Reference in New Issue