From 43582f40a40cdf797d40b0c7721bf77fbb7e3c43 Mon Sep 17 00:00:00 2001 From: Ivlev Denis Date: Mon, 5 Feb 2018 13:54:32 +0300 Subject: [PATCH] Lil-212, LIL-213. Add serializer, viewset, route for Material & Like models --- api/v1/serializers.py | 40 +++++++++++++++++++++++++++++++++++++++- api/v1/urls.py | 7 ++++++- api/v1/views.py | 17 +++++++++++++++-- 3 files changed, 60 insertions(+), 4 deletions(-) diff --git a/api/v1/serializers.py b/api/v1/serializers.py index ea6465f9..d6eb4551 100644 --- a/api/v1/serializers.py +++ b/api/v1/serializers.py @@ -1,6 +1,44 @@ from rest_framework import serializers -from apps.course.models import Category, Course +from apps.course.models import Category, Course, Material, Like + + +class MaterialSerializer(serializers.ModelSerializer): + + class Meta: + model = Material + fields = ( + 'id', + 'title', + 'cover', + 'short_description', + 'created_at', + 'update_at', + ) + + read_only_fields = ( + 'id', + 'created_at', + 'update_at', + ) + + +class LikeSerializer(serializers.ModelSerializer): + + class Meta: + model = Like + fields = ( + 'id', + 'user', + 'created_at', + 'update_at', + ) + + read_only_fields = ( + 'id', + 'created_at', + 'update_at', + ) class CategorySerializer(serializers.ModelSerializer): diff --git a/api/v1/urls.py b/api/v1/urls.py index 1d6feefc..31cd6ec3 100644 --- a/api/v1/urls.py +++ b/api/v1/urls.py @@ -6,11 +6,16 @@ from rest_framework.routers import DefaultRouter from drf_yasg.views import get_schema_view from drf_yasg import openapi -from .views import CategoryViewSet, CourseViewSet +from .views import ( + CategoryViewSet, CourseViewSet, + MaterialViewSet, LikeViewSet, +) router = DefaultRouter() router.register(r'courses', CourseViewSet, base_name='courses') router.register(r'categories', CategoryViewSet, base_name='categories') +router.register(r'materials', MaterialViewSet, base_name='materials') +router.register(r'likes', LikeViewSet, base_name='likes') schema_view = get_schema_view( diff --git a/api/v1/views.py b/api/v1/views.py index 2d543d55..274aa545 100644 --- a/api/v1/views.py +++ b/api/v1/views.py @@ -1,9 +1,22 @@ from rest_framework import viewsets -from .serializers import CategorySerializer, CourseSerializer from . import ExtendedModelViewSet +from .serializers import ( + CategorySerializer, CourseSerializer, + MaterialSerializer, LikeSerializer, +) -from apps.course.models import Category, Course +from apps.course.models import Category, Course, Material, Like + + +class MaterialViewSet(ExtendedModelViewSet): + queryset = Material.objects.all() + serializer_class = MaterialSerializer + + +class LikeViewSet(ExtendedModelViewSet): + queryset = Like.objects.select_related('user').all() + serializer_class = LikeSerializer class CategoryViewSet(ExtendedModelViewSet):