From 54e98413821e6d8b3b5a84ee282692af6e8a8ed6 Mon Sep 17 00:00:00 2001 From: Ivlev Denis Date: Tue, 6 Feb 2018 11:36:53 +0300 Subject: [PATCH] LIL-177. Add serializer, viewset, route for Lesson model --- api/v1/serializers.py | 23 ++++++++++++++++++++++- api/v1/urls.py | 3 ++- api/v1/views.py | 21 ++++++++++++++++----- 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/api/v1/serializers.py b/api/v1/serializers.py index 60a0f77a..2b1bf61a 100644 --- a/api/v1/serializers.py +++ b/api/v1/serializers.py @@ -1,7 +1,7 @@ from django.contrib.auth import get_user_model from rest_framework import serializers -from apps.course.models import Category, Course, Material, Like +from apps.course.models import Category, Course, Material, Lesson, Like from apps.content.models import ( Image, Text, ImageText, Video, Gallery, GalleryImage, @@ -94,6 +94,27 @@ class CourseSerializer(serializers.ModelSerializer): ) +class LessonSerializer(serializers.ModelSerializer): + + class Meta: + model = Lesson + fields = ( + 'id', + 'title', + 'short_description', + 'course', + 'cover', + 'created_at', + 'update_at', + ) + + read_only_fields = ( + 'id', + 'created_at', + 'update_at', + ) + + class ImageSerializer(serializers.ModelSerializer): class Meta: diff --git a/api/v1/urls.py b/api/v1/urls.py index 9a7b1957..6483f23d 100644 --- a/api/v1/urls.py +++ b/api/v1/urls.py @@ -12,13 +12,14 @@ from .views import ( ImageViewSet, TextViewSet, ImageTextViewSet, VideoViewSet, GalleryViewSet, GalleryImageViewSet, - UserViewSet, + UserViewSet, LessonViewSet, ) 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'lessons', LessonViewSet, base_name='lessons') router.register(r'likes', LikeViewSet, base_name='likes') router.register(r'images', ImageViewSet, base_name='images') diff --git a/api/v1/views.py b/api/v1/views.py index cf323758..420bdc6d 100644 --- a/api/v1/views.py +++ b/api/v1/views.py @@ -9,10 +9,10 @@ from .serializers import ( ImageSerializer, TextSerializer, ImageTextSerializer, VideoSerializer, GallerySerializer, GalleryImageSerializer, - UserSerializer, + UserSerializer, LessonSerializer, ) -from apps.course.models import Category, Course, Material, Like +from apps.course.models import Category, Course, Material, Lesson, Like from apps.content.models import ( Image, Text, ImageText, Video, Gallery, GalleryImage, @@ -54,6 +54,14 @@ class CourseViewSet(ExtendedModelViewSet): ordering_fields = ('title', 'created_at', 'update_at',) +class LessonViewSet(ExtendedModelViewSet): + queryset = Lesson.objects.select_related('course').all() + serializer_class = LessonSerializer + filter_fields = ('course',) + search_fields = ('title', 'short_description',) + ordering_fields = ('title', 'created_at', 'update_at',) + + class ImageViewSet(ExtendedModelViewSet): queryset = Image.objects.select_related( 'course', 'lesson' @@ -106,6 +114,9 @@ class GalleryImageViewSet(ExtendedModelViewSet): class UserViewSet(ExtendedModelViewSet): queryset = User.objects.all() serializer_class = UserSerializer - filter_fields = ('is_staff', 'is_active', 'role', 'gender', 'is_email_proved', 'fb_id',) - search_fields = ('email', 'first_name', 'last_name', 'country', 'city', 'fb_id',) - ordering_fields = ('email', 'first_name', 'last_name', 'country', 'city', 'date_joined',) \ No newline at end of file + filter_fields = ('is_staff', 'is_active', 'role', + 'gender', 'is_email_proved', 'fb_id',) + search_fields = ('email', 'first_name', 'last_name', + 'country', 'city', 'fb_id',) + ordering_fields = ('email', 'first_name', 'last_name', + 'country', 'city', 'date_joined',)