manager: respect enable_check_for_future_events in partial bookings (#79642)
gitea/chrono/pipeline/head This commit looks good
Details
gitea/chrono/pipeline/head This commit looks good
Details
This commit is contained in:
parent
0146309c4f
commit
0cc06d2047
|
@ -32,7 +32,7 @@
|
|||
<section class="partial-booking--registrant">
|
||||
{% spaceless %}
|
||||
<h3 class="registrant--name">
|
||||
{% if booking.kind == "booking" %}
|
||||
{% if booking.kind == "booking" and allow_check %}
|
||||
<a
|
||||
rel="popup"
|
||||
href="{% url 'chrono-manager-partial-booking-check' pk=agenda.pk booking_pk=booking.pk %}"
|
||||
|
|
|
@ -1608,6 +1608,10 @@ class AgendaDayView(EventChecksMixin, AgendaDateView, DayArchiveView):
|
|||
except Event.DoesNotExist:
|
||||
return
|
||||
|
||||
context['allow_check'] = bool(
|
||||
self.agenda.enable_check_for_future_events
|
||||
or localtime(event.start_datetime).date() <= localtime().date()
|
||||
)
|
||||
self.add_filters_context(context, event)
|
||||
|
||||
min_time = localtime(event.start_datetime).time()
|
||||
|
@ -4363,6 +4367,13 @@ class PartialBookingCheckView(ViewableAgendaMixin, UpdateView):
|
|||
pk_url_kwarg = 'booking_pk'
|
||||
form_class = PartialBookingCheckForm
|
||||
|
||||
def get_queryset(self, **kwargs):
|
||||
qs = super().get_queryset()
|
||||
return qs.filter(
|
||||
Q(event__start_datetime__date__lte=localtime().date())
|
||||
| Q(event__agenda__enable_check_for_future_events=True),
|
||||
)
|
||||
|
||||
def get_success_url(self):
|
||||
date = self.object.event.start_datetime
|
||||
return reverse(
|
||||
|
|
|
@ -222,6 +222,42 @@ def test_manager_partial_bookings_check(check_types, app, admin_user):
|
|||
assert resp.pyquery('.registrant--bar span').text() == ''
|
||||
|
||||
|
||||
def test_manager_partial_bookings_check_future_events(app, admin_user, freezer):
|
||||
agenda = Agenda.objects.create(label='Foo bar', kind='events', partial_bookings=True)
|
||||
start_datetime = make_aware(datetime.datetime(2023, 5, 2, 8, 0))
|
||||
event = Event.objects.create(
|
||||
label='Event', start_datetime=start_datetime, end_time=datetime.time(18, 00), places=10, agenda=agenda
|
||||
)
|
||||
booking = Booking.objects.create(
|
||||
user_external_id='xxx',
|
||||
user_first_name='Jane',
|
||||
user_last_name='Doe',
|
||||
start_time=datetime.time(11, 00),
|
||||
end_time=datetime.time(13, 30),
|
||||
event=event,
|
||||
)
|
||||
|
||||
app = login(app)
|
||||
day = start_datetime.date()
|
||||
resp = app.get('/manage/agendas/%s/day/%d/%d/%d/' % (agenda.pk, day.year, day.month, day.day))
|
||||
|
||||
assert len(resp.pyquery('.registrant--name a')) == 1
|
||||
app.get('/manage/agendas/%s/bookings/%s/check' % (agenda.pk, booking.pk), status=200)
|
||||
|
||||
freezer.move_to(start_datetime - datetime.timedelta(days=1))
|
||||
|
||||
resp = app.get('/manage/agendas/%s/day/%d/%d/%d/' % (agenda.pk, day.year, day.month, day.day))
|
||||
assert len(resp.pyquery('.registrant--name a')) == 0
|
||||
app.get('/manage/agendas/%s/bookings/%s/check' % (agenda.pk, booking.pk), status=404)
|
||||
|
||||
agenda.enable_check_for_future_events = True
|
||||
agenda.save()
|
||||
|
||||
resp = app.get('/manage/agendas/%s/day/%d/%d/%d/' % (agenda.pk, day.year, day.month, day.day))
|
||||
assert len(resp.pyquery('.registrant--name a')) == 1
|
||||
app.get('/manage/agendas/%s/bookings/%s/check' % (agenda.pk, booking.pk), status=200)
|
||||
|
||||
|
||||
@mock.patch('chrono.manager.forms.get_agenda_check_types')
|
||||
def test_manager_partial_bookings_check_filters(check_types, app, admin_user):
|
||||
check_types.return_value = [
|
||||
|
|
Loading…
Reference in New Issue