manager: prevent access to recurring event detail view (#52636)
This commit is contained in:
parent
82f79b29cf
commit
4d9819d6e2
|
@ -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})
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue