diff --git a/lingo/pricing/urls.py b/lingo/pricing/urls.py index 2d01625..4fbd28d 100644 --- a/lingo/pricing/urls.py +++ b/lingo/pricing/urls.py @@ -138,6 +138,11 @@ urlpatterns = [ staff_member_required(views.agenda_detail), name='lingo-manager-agenda-detail', ), + url( + r'^agenda/((?P[-_a-zA-Z0-9]+))/$', + staff_member_required(views.agenda_detail_redirect), + name='lingo-manager-agenda-detail-redirect', + ), url( r'^agenda/(?P\d+)/export/$', staff_member_required(views.agenda_export), diff --git a/lingo/pricing/views.py b/lingo/pricing/views.py index c8cca42..366843a 100644 --- a/lingo/pricing/views.py +++ b/lingo/pricing/views.py @@ -655,6 +655,15 @@ class AgendaDetailView(AgendaMixin, DetailView): agenda_detail = AgendaDetailView.as_view() +class AgendaDetailRedirectView(RedirectView): + def get_redirect_url(self, *args, **kwargs): + agenda = get_object_or_404(Agenda, slug=kwargs['slug']) + return reverse('lingo-manager-agenda-detail', kwargs={'pk': agenda.pk}) + + +agenda_detail_redirect = AgendaDetailRedirectView.as_view() + + class AgendaExport(AgendaMixin, DetailView): model = Agenda diff --git a/tests/pricing/manager/test_agenda.py b/tests/pricing/manager/test_agenda.py index fef416d..571e518 100644 --- a/tests/pricing/manager/test_agenda.py +++ b/tests/pricing/manager/test_agenda.py @@ -172,6 +172,14 @@ def test_delete_agenda_pricing(app, admin_user): assert AgendaPricing.objects.filter(pk=agenda_pricing.pk).exists() is False +def test_detail_agenda_redirect(app, admin_user): + agenda = Agenda.objects.create(label='Foo Bar') + + app = login(app) + resp = app.get('/manage/pricing/agenda/%s/' % agenda.slug, status=302) + assert resp.location.endswith('/manage/pricing/agenda/%s/' % agenda.pk) + + def test_detail_agenda_pricing(app, admin_user): agenda = Agenda.objects.create(label='Foo Bar') pricing = Pricing.objects.create(label='Model')