diff --git a/roofis2/core/urls.py b/roofis2/core/urls.py index 04b87fe..67217f3 100644 --- a/roofis2/core/urls.py +++ b/roofis2/core/urls.py @@ -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, diff --git a/roofis2/roomservice/api/__init__.py b/roofis2/roomservice/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/roofis2/roomservice/api/serializers.py b/roofis2/roomservice/api/serializers.py new file mode 100644 index 0000000..ca40138 --- /dev/null +++ b/roofis2/roomservice/api/serializers.py @@ -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') diff --git a/roofis2/roomservice/api/urls.py b/roofis2/roomservice/api/urls.py new file mode 100644 index 0000000..2a68b8a --- /dev/null +++ b/roofis2/roomservice/api/urls.py @@ -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'), +] \ No newline at end of file diff --git a/roofis2/roomservice/api/views.py b/roofis2/roomservice/api/views.py new file mode 100644 index 0000000..630bbe5 --- /dev/null +++ b/roofis2/roomservice/api/views.py @@ -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 diff --git a/roofis2/roomservice/urls.py b/roofis2/roomservice/urls.py index f0878f4..271fece 100644 --- a/roofis2/roomservice/urls.py +++ b/roofis2/roomservice/urls.py @@ -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')) ] diff --git a/roofis2/roomservice/views.py b/roofis2/roomservice/views.py index 32485ba..55d2b88 100644 --- a/roofis2/roomservice/views.py +++ b/roofis2/roomservice/views.py @@ -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