416 |
416 |
return places
|
417 |
417 |
|
418 |
418 |
|
419 |
|
def is_event_disabled(event, min_places=1, disable_booked=True):
|
|
419 |
def is_event_disabled(event, min_places=1, disable_booked=True, bookable_events=None):
|
420 |
420 |
if disable_booked and getattr(event, 'user_places_count', 0) > 0:
|
421 |
421 |
return True
|
422 |
422 |
if event.start_datetime < now():
|
423 |
|
# event is past => not disabled (always ok to book a past event)
|
424 |
|
return False
|
|
423 |
# event is past
|
|
424 |
if bookable_events in ['all', 'past']:
|
|
425 |
# but we want to book past events, and it's always ok
|
|
426 |
return False
|
|
427 |
# we just want to show past events, but they are not bookable
|
|
428 |
return True
|
425 |
429 |
if event.remaining_places < min_places and event.remaining_waiting_list_places < min_places:
|
426 |
430 |
return True
|
427 |
431 |
return False
|
... | ... | |
483 |
487 |
else:
|
484 |
488 |
details.update(
|
485 |
489 |
{
|
486 |
|
'disabled': is_event_disabled(event, min_places=min_places, disable_booked=disable_booked),
|
|
490 |
'disabled': is_event_disabled(
|
|
491 |
event,
|
|
492 |
min_places=min_places,
|
|
493 |
disable_booked=disable_booked,
|
|
494 |
bookable_events=bookable_events,
|
|
495 |
),
|
487 |
496 |
'api': {
|
488 |
497 |
'bookings_url': request.build_absolute_uri(
|
489 |
498 |
reverse(
|
... | ... | |
532 |
541 |
first_bookable_slot = None
|
533 |
542 |
for event in events:
|
534 |
543 |
bookable_datetimes_number_total += 1
|
535 |
|
if not is_event_disabled(event, min_places=min_places):
|
|
544 |
if not is_event_disabled(event, min_places=min_places, bookable_events=bookable_events):
|
536 |
545 |
bookable_datetimes_number_available += 1
|
537 |
546 |
if not first_bookable_slot:
|
538 |
547 |
first_bookable_slot = get_event_detail(
|
... | ... | |
786 |
795 |
entries = [
|
787 |
796 |
e
|
788 |
797 |
for e in entries
|
789 |
|
if not is_event_disabled(e, payload['min_places'], disable_booked=disable_booked)
|
|
798 |
if not is_event_disabled(
|
|
799 |
e, payload['min_places'], disable_booked=disable_booked, bookable_events=bookable_events
|
|
800 |
)
|
790 |
801 |
]
|
791 |
802 |
|
792 |
803 |
response = {
|
793 |
|
-
|