diff --git a/chrono/api/serializers.py b/chrono/api/serializers.py index 641dcfee..3b091b63 100644 --- a/chrono/api/serializers.py +++ b/chrono/api/serializers.py @@ -236,6 +236,11 @@ class BookingSerializer(serializers.ModelSerializer): ret['user_presence_reason'] = ( self.instance.user_check_type_slug if self.instance.user_was_present is True else None ) + if self.instance.event.agenda.kind != 'events': + ret['desk'] = { + 'slug': self.instance.event.desk.slug, + 'label': self.instance.event.desk.label, + } return ret def _validate_check_type(self, kind, value): diff --git a/chrono/api/views.py b/chrono/api/views.py index b2178644..8b654c14 100644 --- a/chrono/api/views.py +++ b/chrono/api/views.py @@ -2226,6 +2226,7 @@ class MultipleAgendasEventsCheckStatus(APIView): check_status = {'status': 'error', 'error_reason': 'too-many-bookings-found'} else: booking = bookings_by_event_id[event.pk][0] + booking.event = event # prevent db calls if booking.cancellation_datetime is not None: check_status = {'status': 'cancelled'} elif booking.user_was_present is None: @@ -2490,7 +2491,7 @@ class BookingsAPI(ListAPIView): def get_queryset(self): return ( Booking.objects.filter(primary_booking__isnull=True, cancellation_datetime__isnull=True) - .select_related('event', 'event__agenda') + .select_related('event', 'event__agenda', 'event__desk') .order_by('event__start_datetime', 'event__slug', 'event__agenda__slug', 'pk') ) diff --git a/tests/api/test_booking.py b/tests/api/test_booking.py index 7319d37a..011f6c74 100644 --- a/tests/api/test_booking.py +++ b/tests/api/test_booking.py @@ -120,7 +120,11 @@ def test_bookings_api(app, user): ) meetings_agenda = Agenda.objects.create(kind='meetings') - meetings_event = Event.objects.create(agenda=meetings_agenda, start_datetime=now(), places=1) + desk = Desk.objects.create(agenda=meetings_agenda, label='Desk', slug='desk') + meeting_type = MeetingType.objects.create(agenda=meetings_agenda, label='Foo Bar', slug='foo-bar') + meetings_event = Event.objects.create( + agenda=meetings_agenda, start_datetime=now(), places=1, desk=desk, meeting_type=meeting_type + ) meetings_booking1 = Booking.objects.create(event=meetings_event, user_external_id='enfant-1234') Booking.objects.create(event=meetings_event, user_external_id='baz') Booking.objects.create(event=meetings_event, user_external_id='baz') @@ -158,6 +162,10 @@ def test_bookings_api(app, user): 'cancellation_datetime': None, 'creation_datetime': localtime(meetings_booking1.creation_datetime).isoformat(), 'label': '', + 'desk': { + 'slug': 'desk', + 'label': 'Desk', + }, }, { 'id': events_booking1.pk,