From b0201494ccdc06cfe0e3afe63ce7c28018e0a96e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laur=C3=A9line=20Gu=C3=A9rin?= Date: Thu, 15 Dec 2022 09:28:44 +0100 Subject: [PATCH] manager: redirection for old urls (#72323) --- chrono/manager/urls.py | 10 ++++++++ chrono/manager/views.py | 16 +++++++++++++ tests/manager/test_all.py | 44 ++++++++++++++++++++++++++-------- tests/manager/test_resource.py | 14 +++++++++++ 4 files changed, 74 insertions(+), 10 deletions(-) diff --git a/chrono/manager/urls.py b/chrono/manager/urls.py index 90e21812..f3d08f81 100644 --- a/chrono/manager/urls.py +++ b/chrono/manager/urls.py @@ -83,6 +83,11 @@ urlpatterns = [ views.resource_day_view, name='chrono-manager-resource-day-view', ), + re_path( + r'^resource/(?P\d+)/(?P[0-9]{4})/', + views.resource_redirect_view, + name='chrono-manager-resource-redirect-view', + ), path('resource//edit/', views.resource_edit, name='chrono-manager-resource-edit'), path('resource//delete/', views.resource_delete, name='chrono-manager-resource-delete'), path('categories/', views.category_list, name='chrono-manager-category-list'), @@ -132,6 +137,11 @@ urlpatterns = [ views.agenda_day_view, name='chrono-manager-agenda-day-view', ), + re_path( + r'^agendas/(?P\d+)/(?P[0-9]{4})/', + views.agenda_redirect_view, + name='chrono-manager-agenda-redirect-view', + ), path( 'agendas//events/open/', views.agenda_open_events_view, diff --git a/chrono/manager/views.py b/chrono/manager/views.py index e16a75a7..55dd2102 100644 --- a/chrono/manager/views.py +++ b/chrono/manager/views.py @@ -654,6 +654,14 @@ class ResourceMonthView(ResourceWeekMonthMixin, DateMixin, DayArchiveView): resource_monthly_view = ResourceMonthView.as_view() +class ResourceRedirectView(RedirectView): + def get_redirect_url(self, *args, **kwargs): + return reverse('chrono-manager-resource-view', kwargs={'pk': kwargs['pk']}) + + +resource_redirect_view = ResourceRedirectView.as_view() + + class ResourceAddView(CreateView): template_name = 'chrono/manager_resource_form.html' model = Resource @@ -1754,6 +1762,14 @@ class AgendaMonthView(AgendaWeekMonthMixin, AgendaDateView, DayArchiveView): agenda_monthly_view = AgendaMonthView.as_view() +class AgendaRedirectView(RedirectView): + def get_redirect_url(self, *args, **kwargs): + return reverse('chrono-manager-agenda-view', kwargs={'pk': kwargs['pk']}) + + +agenda_redirect_view = AgendaRedirectView.as_view() + + class AgendaOpenEventsView(ViewableAgendaMixin, DetailView): model = Agenda template_name = 'chrono/manager_agenda_open_events.html' diff --git a/tests/manager/test_all.py b/tests/manager/test_all.py index f87a8945..8b00b7e2 100644 --- a/tests/manager/test_all.py +++ b/tests/manager/test_all.py @@ -113,25 +113,33 @@ def test_events_agenda_redirect(app, admin_user): app = login(app) for agenda_id in [agenda.pk, agenda.slug]: resp = app.get('/manage/agendas/%s/' % agenda_id, status=302) - assert resp.location.endswith('/manage/agendas/%s/month/' % agenda.pk) + assert resp.location.endswith('/manage/agendas/%s/month/' % agenda.pk) agenda.default_view = 'open_events' agenda.save() for agenda_id in [agenda.pk, agenda.slug]: resp = app.get('/manage/agendas/%s/' % agenda_id, status=302) - assert resp.location.endswith('/manage/agendas/%s/events/open/' % agenda.pk) + assert resp.location.endswith('/manage/agendas/%s/events/open/' % agenda.pk) agenda.default_view = 'day' agenda.save() for agenda_id in [agenda.pk, agenda.slug]: resp = app.get('/manage/agendas/%s/' % agenda_id, status=302) - assert resp.location.endswith('/manage/agendas/%s/day/' % agenda.pk) + assert resp.location.endswith('/manage/agendas/%s/day/' % agenda.pk) agenda.default_view = 'week' agenda.save() for agenda_id in [agenda.pk, agenda.slug]: resp = app.get('/manage/agendas/%s/' % agenda_id, status=302) - assert resp.location.endswith('/manage/agendas/%s/week/' % agenda.pk) + assert resp.location.endswith('/manage/agendas/%s/week/' % agenda.pk) + + # old month/week/days views + resp = app.get('/manage/agendas/%s/2022/12/15/' % agenda.pk, status=302) + assert resp.location.endswith('/manage/agendas/%s/' % agenda.pk) + resp = app.get('/manage/agendas/%s/2022/12/' % agenda.pk, status=302) + assert resp.location.endswith('/manage/agendas/%s/' % agenda.pk) + resp = app.get('/manage/agendas/%s/2022/week/1/' % agenda.pk, status=302) + assert resp.location.endswith('/manage/agendas/%s/' % agenda.pk) @freezegun.freeze_time('2020-07-12') @@ -296,19 +304,27 @@ def test_meetings_agenda_redirect(app, admin_user): app = login(app) for agenda_id in [agenda.pk, agenda.slug]: resp = app.get('/manage/agendas/%s/' % agenda_id, status=302) - assert resp.location.endswith('/manage/agendas/%s/day/' % agenda.pk) + assert resp.location.endswith('/manage/agendas/%s/day/' % agenda.pk) agenda.default_view = 'month' agenda.save() for agenda_id in [agenda.pk, agenda.slug]: resp = app.get('/manage/agendas/%s/' % agenda_id, status=302) - assert resp.location.endswith('/manage/agendas/%s/month/' % agenda.pk) + assert resp.location.endswith('/manage/agendas/%s/month/' % agenda.pk) agenda.default_view = 'week' agenda.save() for agenda_id in [agenda.pk, agenda.slug]: resp = app.get('/manage/agendas/%s/' % agenda_id, status=302) - assert resp.location.endswith('/manage/agendas/%s/week/' % agenda.pk) + assert resp.location.endswith('/manage/agendas/%s/week/' % agenda.pk) + + # old month/week/days views + resp = app.get('/manage/agendas/%s/2022/12/15/' % agenda.pk, status=302) + assert resp.location.endswith('/manage/agendas/%s/' % agenda.pk) + resp = app.get('/manage/agendas/%s/2022/12/' % agenda.pk, status=302) + assert resp.location.endswith('/manage/agendas/%s/' % agenda.pk) + resp = app.get('/manage/agendas/%s/2022/week/1/' % agenda.pk, status=302) + assert resp.location.endswith('/manage/agendas/%s/' % agenda.pk) def test_virtual_agenda_redirect(app, admin_user): @@ -317,19 +333,27 @@ def test_virtual_agenda_redirect(app, admin_user): app = login(app) for agenda_id in [agenda.pk, agenda.slug]: resp = app.get('/manage/agendas/%s/' % agenda_id, status=302) - assert resp.location.endswith('/manage/agendas/%s/day/' % agenda.pk) + assert resp.location.endswith('/manage/agendas/%s/day/' % agenda.pk) agenda.default_view = 'month' agenda.save() for agenda_id in [agenda.pk, agenda.slug]: resp = app.get('/manage/agendas/%s/' % agenda_id, status=302) - assert resp.location.endswith('/manage/agendas/%s/month/' % agenda.pk) + assert resp.location.endswith('/manage/agendas/%s/month/' % agenda.pk) agenda.default_view = 'week' agenda.save() for agenda_id in [agenda.pk, agenda.slug]: resp = app.get('/manage/agendas/%s/' % agenda_id, status=302) - assert resp.location.endswith('/manage/agendas/%s/week/' % agenda.pk) + assert resp.location.endswith('/manage/agendas/%s/week/' % agenda.pk) + + # old month/week/days views + resp = app.get('/manage/agendas/%s/2022/12/15/' % agenda.pk, status=302) + assert resp.location.endswith('/manage/agendas/%s/' % agenda.pk) + resp = app.get('/manage/agendas/%s/2022/12/' % agenda.pk, status=302) + assert resp.location.endswith('/manage/agendas/%s/' % agenda.pk) + resp = app.get('/manage/agendas/%s/2022/week/1/' % agenda.pk, status=302) + assert resp.location.endswith('/manage/agendas/%s/' % agenda.pk) def test_view_agendas_as_admin(app, admin_user): diff --git a/tests/manager/test_resource.py b/tests/manager/test_resource.py index 9db31a0e..cbc70e87 100644 --- a/tests/manager/test_resource.py +++ b/tests/manager/test_resource.py @@ -66,6 +66,20 @@ def test_view_resource_as_manager(app, manager_user): app.get('/manage/resource/%s/' % resource.pk, status=403) +def test_resource_redirect(app, admin_user): + resource = Resource.objects.create(label='Resource 1') + + app = login(app) + + # old month/week/days views + resp = app.get('/manage/resource/%s/2022/12/15/' % resource.pk, status=302) + assert resp.location.endswith('/manage/resource/%s/' % resource.pk) + resp = app.get('/manage/resource/%s/2022/12/' % resource.pk, status=302) + assert resp.location.endswith('/manage/resource/%s/' % resource.pk) + resp = app.get('/manage/resource/%s/2022/week/1/' % resource.pk, status=302) + assert resp.location.endswith('/manage/resource/%s/' % resource.pk) + + def test_resource_day_view(app, admin_user, get_proper_html_str): today = datetime.date.today() resource = Resource.objects.create(label='Foo bar')