api: fix fillslots api when meeting type id is not found (#42534)
This commit is contained in:
parent
19af0088ff
commit
8e775f2bd3
|
@ -605,7 +605,18 @@ class Fillslots(APIView):
|
|||
datetimes.add(make_aware(datetime.datetime.strptime(datetime_str, '%Y-%m-%d-%H%M')))
|
||||
|
||||
# get all free slots and separate them by desk
|
||||
all_slots = get_all_slots(agenda, agenda.get_meetingtype(id_=meeting_type_id))
|
||||
try:
|
||||
all_slots = get_all_slots(agenda, agenda.get_meetingtype(id_=meeting_type_id))
|
||||
except (MeetingType.DoesNotExist, ValueError):
|
||||
return Response(
|
||||
{
|
||||
'err': 1,
|
||||
'err_class': 'invalid meeting type id: %s' % meeting_type_id,
|
||||
'err_desc': _('invalid meeting type id: %s') % meeting_type_id,
|
||||
},
|
||||
status=status.HTTP_400_BAD_REQUEST,
|
||||
)
|
||||
|
||||
all_free_slots = [slot for slot in all_slots if not slot.full]
|
||||
datetimes_by_desk = defaultdict(set)
|
||||
for slot in all_free_slots:
|
||||
|
|
|
@ -861,6 +861,19 @@ def test_booking_api_meeting_fillslots(app, meetings_agenda, user):
|
|||
assert resp.json['err_class'] == 'all slots must have the same meeting type id (1)'
|
||||
assert resp.json['err_desc'] == 'all slots must have the same meeting type id (1)'
|
||||
|
||||
unknown_slots = ['0:2017-05-22-1130']
|
||||
resp = app.post('/api/agenda/%s/fillslots/' % agenda_id, params={'slots': unknown_slots}, status=400)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['reason'] == 'invalid meeting type id: 0' # legacy
|
||||
assert resp.json['err_class'] == 'invalid meeting type id: 0'
|
||||
assert resp.json['err_desc'] == 'invalid meeting type id: 0'
|
||||
unknown_slots = ['foobar:2017-05-22-1130']
|
||||
resp = app.post('/api/agenda/%s/fillslots/' % agenda_id, params={'slots': unknown_slots}, status=400)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['reason'] == 'invalid meeting type id: foobar' # legacy
|
||||
assert resp.json['err_class'] == 'invalid meeting type id: foobar'
|
||||
assert resp.json['err_desc'] == 'invalid meeting type id: foobar'
|
||||
|
||||
|
||||
def test_booking_api_meeting_across_daylight_saving_time(app, meetings_agenda, user):
|
||||
meetings_agenda.maximal_booking_delay = 365
|
||||
|
|
Loading…
Reference in New Issue