manager: disable check for partial bookings if check locked (#80983)
gitea/chrono/pipeline/head This commit looks good Details

This commit is contained in:
Lauréline Guérin 2023-09-07 17:55:02 +02:00 committed by Lauréline Guérin
parent e231d27751
commit 60de169359
2 changed files with 34 additions and 4 deletions

View File

@ -1624,9 +1624,13 @@ class AgendaDayView(EventChecksMixin, AgendaDateView, DayArchiveView):
return
context['event'] = event
context['allow_check'] = bool(
self.agenda.enable_check_for_future_events
or localtime(event.start_datetime).date() <= localtime().date()
context['allow_check'] = (
(
self.agenda.enable_check_for_future_events
or localtime(event.start_datetime).date() <= localtime().date()
)
and (not event.checked or not self.agenda.disable_check_update)
and not event.check_locked
)
self.add_filters_context(context, event)
@ -4480,8 +4484,10 @@ class PartialBookingCheckView(ViewableAgendaMixin, UpdateView):
def get_queryset(self, **kwargs):
qs = super().get_queryset()
return qs.filter(
Q(event__checked=False) | Q(event__agenda__disable_check_update=False),
Q(event__start_datetime__date__lte=localtime().date())
| Q(event__agenda__enable_check_for_future_events=True),
event__check_locked=False,
)
def get_success_url(self):

View File

@ -246,7 +246,7 @@ def test_manager_partial_bookings_check(check_types, app, admin_user):
event = Event.objects.create(
label='Event', start_datetime=start_datetime, end_time=datetime.time(18, 00), places=10, agenda=agenda
)
Booking.objects.create(
booking = Booking.objects.create(
user_external_id='xxx',
user_first_name='Jane',
user_last_name='Doe',
@ -343,6 +343,30 @@ def test_manager_partial_bookings_check(check_types, app, admin_user):
assert len(resp.pyquery('.registrant--bar.booking')) == 1
assert resp.pyquery('.registrant--bar span').text() == ''
# event is checked
event.checked = True
event.save()
assert agenda.disable_check_update is False
resp = app.get('/manage/agendas/%s/day/%d/%d/%d/' % (agenda.pk, today.year, today.month, today.day))
assert '/manage/agendas/%s/bookings/%s/check' % (agenda.pk, booking.pk) in resp
app.get('/manage/agendas/%s/bookings/%s/check' % (agenda.pk, booking.pk), status=200)
# event check is locked
event.check_locked = True
event.save()
resp = app.get('/manage/agendas/%s/day/%d/%d/%d/' % (agenda.pk, today.year, today.month, today.day))
assert '/manage/agendas/%s/bookings/%s/check' % (agenda.pk, booking.pk) not in resp
app.get('/manage/agendas/%s/bookings/%s/check' % (agenda.pk, booking.pk), status=404)
# now disable check update
event.check_locked = False
event.save()
agenda.disable_check_update = True
agenda.save()
resp = app.get('/manage/agendas/%s/day/%d/%d/%d/' % (agenda.pk, today.year, today.month, today.day))
assert '/manage/agendas/%s/bookings/%s/check' % (agenda.pk, booking.pk) not in resp
app.get('/manage/agendas/%s/bookings/%s/check' % (agenda.pk, booking.pk), status=404)
def test_manager_partial_bookings_check_future_events(app, admin_user, freezer):
agenda = Agenda.objects.create(label='Foo bar', kind='events', partial_bookings=True)