Projet

Général

Profil

0001-manager-redirect-day-view-to-last-day-of-month-when-.patch

Frédéric Péters, 31 octobre 2018 11:43

Télécharger (2,85 ko)

Voir les différences:

Subject: [PATCH] manager: redirect day view to last day of month when out of
 range (#26455)

 chrono/manager/views.py | 18 +++++++++++++++---
 tests/test_manager.py   | 12 ++++++++++++
 2 files changed, 27 insertions(+), 3 deletions(-)
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
-