manager: prevent access to recurring event detail view (#52636)

This commit is contained in:
Valentin Deniaud 2021-04-01 16:14:01 +02:00
parent 82f79b29cf
commit 4d9819d6e2
2 changed files with 13 additions and 1 deletions

View File

@ -1830,6 +1830,11 @@ class EventDetailView(ViewableAgendaMixin, DetailView):
model = Event
pk_url_kwarg = 'event_pk'
def dispatch(self, request, *args, **kwargs):
if self.get_object().recurrence_rule:
raise Http404('this view makes no sense for recurring events')
return super().dispatch(request, *args, **kwargs)
def get_template_names(self):
if self.request.is_ajax():
return ['chrono/manager_event_detail_fragment.html']
@ -1858,7 +1863,11 @@ class EventEditView(ManagedAgendaMixin, UpdateView):
pk_url_kwarg = 'event_pk'
def get_success_url(self):
if self.request.GET.get('next') == 'settings' or self.request.POST.get('next') == 'settings':
if (
self.request.GET.get('next') == 'settings'
or self.request.POST.get('next') == 'settings'
or self.object.recurrence_rule
):
return reverse('chrono-manager-agenda-settings', kwargs={'pk': self.agenda.id})
return reverse('chrono-manager-event-view', kwargs={'pk': self.agenda.id, 'event_pk': self.object.id})

View File

@ -226,6 +226,9 @@ def test_edit_recurring_event(settings, app, admin_user, freezer):
resp.form['repeat'] = 'weekly'
resp = resp.form.submit()
# detail page doesn't exist
resp = app.get('/manage/agendas/%s/events/%s/' % (agenda.id, event.id), status=404)
resp = app.get('/manage/agendas/%s/settings' % agenda.id, status=200)
assert 'Weekly on Tuesday at 1:10 p.m.' in resp.text
# event is bookable regardless of minimal_booking_delay, since it has bookable recurrences