api: add endpoint to get number of total/available/reserved places (#11374)
This commit is contained in:
parent
cc093973ad
commit
bb09199d96
|
@ -21,5 +21,6 @@ from . import views
|
|||
urlpatterns = patterns('',
|
||||
url(r'agenda/(?P<pk>\w+)/datetimes/', views.datetimes),
|
||||
url(r'agenda/(?P<agenda_pk>\w+)/fillslot/(?P<event_pk>\w+)/', views.fillslot),
|
||||
url(r'agenda/(?P<agenda_pk>\w+)/status/(?P<event_pk>\w+)/', views.slot_status),
|
||||
url(r'booking/(?P<booking_pk>\w+)/', views.booking),
|
||||
)
|
||||
|
|
|
@ -76,3 +76,22 @@ class BookingAPI(APIView):
|
|||
return Response(response)
|
||||
|
||||
booking = BookingAPI.as_view()
|
||||
|
||||
|
||||
class SlotStatus(GenericAPIView):
|
||||
serializer_class = SlotSerializer
|
||||
permission_classes = (permissions.IsAuthenticated,)
|
||||
|
||||
def get(self, request, agenda_pk=None, event_pk=None, format=None):
|
||||
event = Event.objects.filter(id=event_pk)[0]
|
||||
response = {
|
||||
'err': 0,
|
||||
'places': {
|
||||
'total': event.places,
|
||||
'reserved': event.booked_places,
|
||||
'available': event.places - event.booked_places,
|
||||
}
|
||||
}
|
||||
return Response(response)
|
||||
|
||||
slot_status = SlotStatus.as_view()
|
||||
|
|
|
@ -114,3 +114,17 @@ def test_soldout(app, some_data, user):
|
|||
resp = app.post('/api/agenda/%s/fillslot/%s/' % (agenda_id, event.id), status=400)
|
||||
assert resp.json['err'] == 1
|
||||
assert resp.json['reason'] == 'sold out'
|
||||
|
||||
def test_status(app, some_data, user):
|
||||
agenda_id = Agenda.objects.filter(label=u'Foo bar')[0].id
|
||||
event = Event.objects.filter(agenda_id=agenda_id)[0]
|
||||
Booking(event=event).save()
|
||||
|
||||
resp = app.get('/api/agenda/%s/status/%s/' % (agenda_id, event.id), status=403)
|
||||
|
||||
app.authorization = ('Basic', ('john.doe', 'password'))
|
||||
resp = app.get('/api/agenda/%s/status/%s/' % (agenda_id, event.id))
|
||||
assert resp.json['err'] == 0
|
||||
assert resp.json['places']['total'] == 10
|
||||
assert resp.json['places']['available'] == 9
|
||||
assert resp.json['places']['reserved'] == 1
|
||||
|
|
Loading…
Reference in New Issue