api: add desk info for bookings of meetings agenda (#69170)
gitea-wip/chrono/pipeline/pr-main This commit looks good Details

This commit is contained in:
Lauréline Guérin 2022-11-06 14:51:18 +01:00
parent cfd3de9908
commit 9ff5fb0f13
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
3 changed files with 16 additions and 2 deletions

View File

@ -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):

View File

@ -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')
)

View File

@ -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,