From acb43aa16efd88cf372281fb2349a2240a7e665e Mon Sep 17 00:00:00 2001 From: Ivlev Denis Date: Wed, 21 Feb 2018 12:03:27 +0300 Subject: [PATCH] LIL-256. Add serializer, viewset & route for SchoolSchedule --- api/v1/serializers/school.py | 22 ++++++++++++++++++++++ api/v1/urls.py | 30 +++++++++++++++++------------- api/v1/views.py | 9 ++++++++- 3 files changed, 47 insertions(+), 14 deletions(-) create mode 100644 api/v1/serializers/school.py diff --git a/api/v1/serializers/school.py b/api/v1/serializers/school.py new file mode 100644 index 00000000..29e76ad1 --- /dev/null +++ b/api/v1/serializers/school.py @@ -0,0 +1,22 @@ +from rest_framework import serializers + +from apps.school.models import SchoolSchedule + + +class SchoolScheduleSerializer(serializers.ModelSerializer): + + class Meta: + model = SchoolSchedule + fields = ( + 'id', + 'weekday', + 'title', + 'description', + 'materials', + 'age', + 'month_price', + ) + + read_only_fields = ( + 'id', + ) diff --git a/api/v1/urls.py b/api/v1/urls.py index 305b053d..171b7794 100644 --- a/api/v1/urls.py +++ b/api/v1/urls.py @@ -14,6 +14,7 @@ from .views import ( ImageTextViewSet, VideoViewSet, GalleryViewSet, GalleryImageViewSet, UserViewSet, LessonViewSet, ImageObjectViewSet, + SchoolScheduleViewSet, ) router = DefaultRouter() @@ -30,24 +31,27 @@ router.register(r'image-texts', ImageTextViewSet, base_name='image-texts') router.register(r'videos', VideoViewSet, base_name='videos') router.register(r'galleries', GalleryViewSet, base_name='galleries') router.register(r'gallery-images', GalleryImageViewSet, base_name='gallery-images') + +router.register(r'school-schedules', SchoolScheduleViewSet, base_name='school-schedules') + router.register(r'users', UserViewSet, base_name='users') schema_view = get_schema_view( - openapi.Info( - title="Lil Sity API", - default_version='v1', - description="Routes of Lil City project", - ), - validators=['flex', 'ssv'], - public=False, - permission_classes=(permissions.AllowAny,), + openapi.Info( + title="Lil Sity API", + default_version='v1', + description="Routes of Lil City project", + ), + validators=['flex', 'ssv'], + public=False, + permission_classes=(permissions.AllowAny,), ) urlpatterns = [ - path('swagger(.json|.yaml)', schema_view.without_ui(cache_timeout=None), name='schema-json'), - path('swagger/', schema_view.with_ui('swagger', cache_timeout=None), name='schema-swagger-ui'), - path('redoc/', schema_view.with_ui('redoc', cache_timeout=None), name='schema-redoc'), - path('api-token-auth/', ObtainToken.as_view(), name='api-token-auth'), - path('', include((router.urls, 'api-root')), name='api-root'), + path('swagger(.json|.yaml)', schema_view.without_ui(cache_timeout=None), name='schema-json'), + path('swagger/', schema_view.with_ui('swagger', cache_timeout=None), name='schema-swagger-ui'), + path('redoc/', schema_view.with_ui('redoc', cache_timeout=None), name='schema-redoc'), + path('api-token-auth/', ObtainToken.as_view(), name='api-token-auth'), + path('', include((router.urls, 'api-root')), name='api-root'), ] diff --git a/api/v1/views.py b/api/v1/views.py index 56c65ff9..90591e0c 100644 --- a/api/v1/views.py +++ b/api/v1/views.py @@ -23,6 +23,7 @@ from .serializers.content import ( GalleryImageSerializer, GalleryImageCreateSerializer, ImageObjectSerializer, ) +from .serializers.school import SchoolScheduleSerializer from .serializers.user import ( UserSerializer, UserPhotoSerializer, ) @@ -34,7 +35,7 @@ from apps.content.models import ( Image, Text, ImageText, Video, Gallery, GalleryImage, ImageObject, ) - +from apps.school.models import SchoolSchedule User = get_user_model() @@ -285,3 +286,9 @@ class UserViewSet(ExtendedModelViewSet): return Response({'success': True}) else: return Response({'success': False}, status=status.HTTP_400_BAD_REQUEST) + + +class SchoolScheduleViewSet(ExtendedModelViewSet): + queryset = SchoolSchedule.objects.all() + serializer_class = SchoolScheduleSerializer + permission_classes = (IsAdmin,)