manager: partial bookings, events redirect to day view (#80982)
gitea/chrono/pipeline/head This commit looks good
Details
gitea/chrono/pipeline/head This commit looks good
Details
This commit is contained in:
parent
c8d71aa997
commit
93081c6e46
|
@ -2697,6 +2697,8 @@ class EventDetailView(ViewableAgendaMixin, DetailView):
|
|||
def dispatch(self, request, *args, **kwargs):
|
||||
if self.get_object().recurrence_days:
|
||||
raise Http404('this view makes no sense for recurring events')
|
||||
if self.get_object().agenda.partial_bookings:
|
||||
raise Http404('this view makes no sense for partial bookings')
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
def get_template_names(self):
|
||||
|
@ -2725,8 +2727,19 @@ event_view = EventDetailView.as_view()
|
|||
|
||||
class EventDetailRedirectView(RedirectView):
|
||||
def get_redirect_url(self, *args, **kwargs):
|
||||
agenda = get_object_or_404(Agenda, slug=kwargs['slug'])
|
||||
agenda = get_object_or_404(Agenda, slug=kwargs['slug'], kind='events')
|
||||
event = get_object_or_404(Event, slug=kwargs['event_slug'], agenda=agenda)
|
||||
if agenda.partial_bookings:
|
||||
day = localtime(event.start_datetime)
|
||||
return reverse(
|
||||
'chrono-manager-agenda-day-view',
|
||||
kwargs={
|
||||
'pk': agenda.pk,
|
||||
'year': day.year,
|
||||
'month': day.strftime('%m'),
|
||||
'day': day.strftime('%d'),
|
||||
},
|
||||
)
|
||||
return reverse('chrono-manager-event-view', kwargs={'pk': agenda.pk, 'event_pk': event.pk})
|
||||
|
||||
|
||||
|
@ -2744,6 +2757,7 @@ class EventEditView(ManagedAgendaMixin, UpdateView):
|
|||
self.request.GET.get('next') == 'settings'
|
||||
or self.request.POST.get('next') == 'settings'
|
||||
or self.object.recurrence_days
|
||||
or self.object.agenda.partial_bookings
|
||||
):
|
||||
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})
|
||||
|
@ -2796,6 +2810,7 @@ class EventChecksView(ViewableAgendaMixin, EventChecksMixin, DetailView):
|
|||
Agenda,
|
||||
pk=kwargs.get('pk'),
|
||||
kind='events',
|
||||
partial_bookings=False,
|
||||
)
|
||||
|
||||
def get_queryset(self):
|
||||
|
|
|
@ -1263,11 +1263,19 @@ def test_event_detail_redirect(app, admin_user):
|
|||
waiting_list_places=2,
|
||||
agenda=agenda,
|
||||
)
|
||||
day = localtime(event.start_datetime)
|
||||
|
||||
login(app)
|
||||
resp = app.get('/manage/agendas/%s/events/%s/' % (agenda.slug, event.slug), status=302)
|
||||
assert resp.location.endswith('/manage/agendas/%s/events/%s/' % (agenda.pk, event.pk))
|
||||
|
||||
agenda.partial_bookings = True
|
||||
agenda.save()
|
||||
resp = app.get('/manage/agendas/%s/events/%s/' % (agenda.slug, event.slug), status=302)
|
||||
assert resp.location.endswith(
|
||||
'/manage/agendas/%s/day/%d/%02d/%02d/' % (agenda.pk, day.year, day.month, day.day)
|
||||
)
|
||||
|
||||
|
||||
def test_event_cancellation(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='Events', kind='events')
|
||||
|
@ -1734,6 +1742,14 @@ def test_event_check(app, admin_user):
|
|||
assert '/manage/agendas/%s/events/%s/check' % (agenda.pk, event.pk) not in resp
|
||||
app.get('/manage/agendas/%s/events/%s/check' % (agenda.pk, event.pk), status=404)
|
||||
|
||||
# partial bookings
|
||||
event.cancellation_datetime = None
|
||||
event.save()
|
||||
agenda.partial_bookings = True
|
||||
agenda.save()
|
||||
app.get('/manage/agendas/%s/events/%s/' % (agenda.pk, event.pk), status=404)
|
||||
app.get('/manage/agendas/%s/events/%s/check' % (agenda.pk, event.pk), status=404)
|
||||
|
||||
|
||||
def test_event_checked(app, admin_user):
|
||||
agenda = Agenda.objects.create(label='Events', kind='events', booking_check_filters='foo,bar')
|
||||
|
|
Loading…
Reference in New Issue