api: specify which event is not bookable (#55996)

This commit is contained in:
Valentin Deniaud 2021-08-24 14:43:36 +02:00
parent a639650707
commit 5041ef37ce
2 changed files with 22 additions and 21 deletions

View File

@ -586,16 +586,17 @@ def get_events_from_slots(slots, request, agenda, payload):
for event in events:
if event.start_datetime >= now():
if not book_future or not event.in_bookable_period():
raise APIError(_('event not bookable'), err_class='event not bookable')
raise APIError(_('event %s is not bookable') % event.slug, err_class='event not bookable')
else:
if not book_past:
raise APIError(_('event not bookable'), err_class='event not bookable')
raise APIError(_('event %s is not bookable') % event.slug, err_class='event not bookable')
if event.cancelled:
raise APIError(_('event is cancelled'), err_class='event is cancelled')
raise APIError(_('event %s is cancelled') % event.slug, err_class='event is cancelled')
if exclude_user and user_external_id:
if event.booking_set.filter(user_external_id=user_external_id).exists():
raise APIError(
_('event is already booked by user'), err_class='event is already booked by user'
_('event %s is already booked by user') % event.slug,
err_class='event is already booked by user',
)
if slots and not events.exists():

View File

@ -409,7 +409,7 @@ def test_booking_api_fillslots(app, some_data, user):
assert resp.json['err'] == 1
assert resp.json['reason'] == 'event not bookable' # legacy
assert resp.json['err_class'] == 'event not bookable'
assert resp.json['err_desc'] == 'event not bookable'
assert resp.json['err_desc'] == 'event foo-bar-event is not bookable'
def test_booking_api_fillslots_slots_string_param(app, some_data, user):
@ -1915,11 +1915,11 @@ def test_fillslot_past_event(app, user):
resp = app.post('/api/agenda/%s/fillslot/%s/' % (agenda.slug, event1.slug))
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'event not bookable'
assert resp.json['err_desc'] == 'event %s is not bookable' % event1.slug
resp = app.post('/api/agenda/%s/fillslot/%s/' % (agenda.slug, event1.slug), params={'events': 'future'})
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'event not bookable'
assert resp.json['err_desc'] == 'event %s is not bookable' % event1.slug
resp = app.post('/api/agenda/%s/fillslot/%s/' % (agenda.slug, event1.slug), params={'events': 'past'})
assert resp.json['err'] == 0
@ -1935,15 +1935,15 @@ def test_fillslot_past_event(app, user):
resp = app.post('/api/agenda/%s/fillslot/%s/' % (agenda.slug, event2.slug), params={'events': 'past'})
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'event not bookable'
assert resp.json['err_desc'] == 'event %s is not bookable' % event2.slug
resp = app.post('/api/agenda/%s/fillslot/%s/?events=past' % (agenda.slug, event2.slug))
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'event not bookable'
assert resp.json['err_desc'] == 'event %s is not bookable' % event2.slug
resp = app.post(
'/api/agenda/%s/fillslot/%s/?events=all' % (agenda.slug, event2.slug), params={'events': 'past'}
)
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'event not bookable'
assert resp.json['err_desc'] == 'event %s is not bookable' % event2.slug
resp = app.post('/api/agenda/%s/fillslot/%s/' % (agenda.slug, event2.slug), params={'events': 'all'})
assert resp.json['err'] == 0
@ -1953,10 +1953,10 @@ def test_fillslot_past_event(app, user):
event2.cancel()
resp = app.post('/api/agenda/%s/fillslot/%s/' % (agenda.slug, event1.slug), params={'events': 'all'})
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'event is cancelled'
assert resp.json['err_desc'] == 'event %s is cancelled' % event1.slug
resp = app.post('/api/agenda/%s/fillslot/%s/' % (agenda.slug, event2.slug), params={'events': 'all'})
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'event is cancelled'
assert resp.json['err_desc'] == 'event %s is cancelled' % event2.slug
def test_fillslot_past_event_places(app, user):
@ -2026,7 +2026,7 @@ def test_fillslot_past_events_exclude_slots(app, user):
params={'events': 'past', 'user_external_id': '35', 'exclude_user': True},
)
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'event is already booked by user'
assert resp.json['err_desc'] == 'event %s is already booked by user' % event.slug
def test_fillslot_past_events_recurring_event(app, user):
@ -2063,7 +2063,7 @@ def test_fillslot_past_events_recurring_event(app, user):
assert resp.json['err'] == 0
resp = app.post('/api/agenda/%s/fillslot/%s/' % (agenda.slug, event_slug), params={'events': 'future'})
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'event not bookable'
assert resp.json['err_desc'] == 'event %s is not bookable' % event_slug.replace(':', '--')
event_slug = '%s:%s' % (
event.slug,
@ -2071,7 +2071,7 @@ def test_fillslot_past_events_recurring_event(app, user):
) # too late
resp = app.post('/api/agenda/%s/fillslot/%s/' % (agenda.slug, event_slug), params={'events': 'all'})
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'event not bookable'
assert resp.json['err_desc'] == 'event %s is not bookable' % event_slug.replace(':', '--')
event_slug = '%s:%s' % (
event.slug,
@ -2079,7 +2079,7 @@ def test_fillslot_past_events_recurring_event(app, user):
)
resp = app.post('/api/agenda/%s/fillslot/%s/' % (agenda.slug, event_slug), params={'events': 'past'})
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'event not bookable'
assert resp.json['err_desc'] == 'event %s is not bookable' % event_slug.replace(':', '--')
resp = app.post('/api/agenda/%s/fillslot/%s/' % (agenda.slug, event_slug), params={'events': 'all'})
assert resp.json['err'] == 0
resp = app.post('/api/agenda/%s/fillslot/%s/' % (agenda.slug, event_slug), params={'events': 'future'})
@ -2093,7 +2093,7 @@ def test_fillslot_past_events_recurring_event(app, user):
params={'events': 'past', 'user_external_id': '42', 'exclude_user': True},
)
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'event is already booked by user'
assert resp.json['err_desc'] == 'event %s is already booked by user' % first_recurrence.slug
# check canceled
first_recurrence.cancel()
@ -2101,7 +2101,7 @@ def test_fillslot_past_events_recurring_event(app, user):
'/api/agenda/%s/fillslot/%s/' % (agenda.slug, first_recurrence.slug), params={'events': 'past'}
)
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'event is cancelled'
assert resp.json['err_desc'] == 'event %s is cancelled' % first_recurrence.slug
def test_recurring_events_api_fillslots(app, user, freezer):
@ -2417,17 +2417,17 @@ def test_api_events_fillslots_past_event(app, user):
params = {'user_external_id': 'user_id', 'slots': ','.join((event1.slug, event2.slug))}
resp = app.post_json('/api/agenda/%s/events/fillslots/' % agenda.slug, params)
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'event not bookable'
assert resp.json['err_desc'] == 'event %s is not bookable' % event1.slug
params['events'] = 'future'
resp = app.post_json('/api/agenda/%s/events/fillslots/' % agenda.slug, params)
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'event not bookable'
assert resp.json['err_desc'] == 'event %s is not bookable' % event1.slug
params['events'] = 'past'
resp = app.post_json('/api/agenda/%s/events/fillslots/' % agenda.slug, params)
assert resp.json['err'] == 1
assert resp.json['err_desc'] == 'event not bookable'
assert resp.json['err_desc'] == 'event %s is not bookable' % event2.slug
params['events'] = 'all'
resp = app.post_json('/api/agenda/%s/events/fillslots/' % agenda.slug, params)