Add booking api endpoint

This commit is contained in:
Götz 2018-06-09 06:59:24 +02:00
parent 0cd0a3dcd9
commit d9023f37d5
7 changed files with 53 additions and 5 deletions

View File

@ -20,7 +20,6 @@ from rest_framework.documentation import include_docs_urls
from rest_framework.permissions import AllowAny
from django.contrib.auth import views as auth_views
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('roomservice.urls')),
@ -28,9 +27,8 @@ urlpatterns = [
path('login/', auth_views.login, {'template_name': 'login.jinja'}, name='login'),
path('logout/', auth_views.logout, name='logout'),
# APIs
# path('api/', include('respool.api.urls')),
path('api/', include('roomservice.api.urls')),
# API Docs
# path('api/docs/', include_docs_urls(title='Respool API Docs', public=True,

View File

View File

@ -0,0 +1,20 @@
from roomservice.models import Booking, Room
from rest_framework import serializers
class RoomSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Room
fields = ('id',)
class BookingSerializer(serializers.HyperlinkedModelSerializer):
room = RoomSerializer(many=False, read_only=True)
start_date = serializers.DateField(format='iso-8601')
end_date = serializers.DateField(format='iso-8601')
start_time = serializers.TimeField(format='iso-8601')
end_time = serializers.TimeField(format='iso-8601')
class Meta:
model = Booking
fields = ('id', 'room', 'start_date', 'end_date', 'start_time', 'end_time')

View File

@ -0,0 +1,7 @@
from django.urls import path
from . import views
app_name = 'roomservice.api'
urlpatterns = [
path('booking', views.ApiBooking.as_view(), name='api-booking'),
]

View File

@ -0,0 +1,21 @@
from __future__ import unicode_literals
from roomservice.models import Booking
from roomservice.api.serializers import BookingSerializer
from rest_framework import generics
from rest_framework.decorators import permission_classes
from rest_framework.permissions import IsAuthenticated, AllowAny
@permission_classes((AllowAny,))
class ApiBooking(generics.ListAPIView):
serializer_class = BookingSerializer
def get_queryset(self):
queryset = Booking.objects.all()
roomId = self.request.query_params.get('room_id')
if roomId:
queryset = queryset.filter(room=roomId)
return queryset

View File

@ -1,4 +1,4 @@
from django.urls import path
from django.urls import path, include
from . import views
app_name = 'roomservice'
@ -10,4 +10,6 @@ urlpatterns = [
path('booking', views.booking, name='booking'),
path('search', views.search, name='search'),
path('search', views.location_based_search, name='location-based-search'),
path('roomservice', include('roomservice.api.urls'))
]

View File

@ -1,4 +1,4 @@
from roomservice.models import Room, Favorite
from roomservice.models import Room, Favorite, Booking
from django.shortcuts import render, redirect
import logging