api: a past event is disabled except if we want to book it (#56615)
This commit is contained in:
parent
e4603ed856
commit
09b1ce63d9
|
@ -416,12 +416,16 @@ def get_event_places(event):
|
|||
return places
|
||||
|
||||
|
||||
def is_event_disabled(event, min_places=1, disable_booked=True):
|
||||
def is_event_disabled(event, min_places=1, disable_booked=True, bookable_events=None):
|
||||
if disable_booked and getattr(event, 'user_places_count', 0) > 0:
|
||||
return True
|
||||
if event.start_datetime < now():
|
||||
# event is past => not disabled (always ok to book a past event)
|
||||
return False
|
||||
# event is past
|
||||
if bookable_events in ['all', 'past']:
|
||||
# but we want to book past events, and it's always ok
|
||||
return False
|
||||
# we just want to show past events, but they are not bookable
|
||||
return True
|
||||
if event.remaining_places < min_places and event.remaining_waiting_list_places < min_places:
|
||||
return True
|
||||
return False
|
||||
|
@ -483,7 +487,12 @@ def get_event_detail(
|
|||
else:
|
||||
details.update(
|
||||
{
|
||||
'disabled': is_event_disabled(event, min_places=min_places, disable_booked=disable_booked),
|
||||
'disabled': is_event_disabled(
|
||||
event,
|
||||
min_places=min_places,
|
||||
disable_booked=disable_booked,
|
||||
bookable_events=bookable_events,
|
||||
),
|
||||
'api': {
|
||||
'bookings_url': request.build_absolute_uri(
|
||||
reverse(
|
||||
|
@ -532,7 +541,7 @@ def get_events_meta_detail(
|
|||
first_bookable_slot = None
|
||||
for event in events:
|
||||
bookable_datetimes_number_total += 1
|
||||
if not is_event_disabled(event, min_places=min_places):
|
||||
if not is_event_disabled(event, min_places=min_places, bookable_events=bookable_events):
|
||||
bookable_datetimes_number_available += 1
|
||||
if not first_bookable_slot:
|
||||
first_bookable_slot = get_event_detail(
|
||||
|
@ -786,7 +795,9 @@ class Datetimes(APIView):
|
|||
entries = [
|
||||
e
|
||||
for e in entries
|
||||
if not is_event_disabled(e, payload['min_places'], disable_booked=disable_booked)
|
||||
if not is_event_disabled(
|
||||
e, payload['min_places'], disable_booked=disable_booked, bookable_events=bookable_events
|
||||
)
|
||||
]
|
||||
|
||||
response = {
|
||||
|
|
Loading…
Reference in New Issue