Projet

Général

Profil

0003-api-a-past-event-is-disabled-except-if-we-want-to-bo.patch

Lauréline Guérin, 04 octobre 2021 18:06

Télécharger (2,78 ko)

Voir les différences:

Subject: [PATCH 3/5] api: a past event is disabled except if we want to book
 it (#56615)

 chrono/api/views.py | 23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)
chrono/api/views.py
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
-