diff --git a/api/v1/serializers.py b/api/v1/serializers.py index d6eb4551..fcecf473 100644 --- a/api/v1/serializers.py +++ b/api/v1/serializers.py @@ -1,6 +1,7 @@ from rest_framework import serializers from apps.course.models import Category, Course, Material, Like +from apps.content.models import Image, Text, ImageText, Video class MaterialSerializer(serializers.ModelSerializer): @@ -80,8 +81,92 @@ class CourseSerializer(serializers.ModelSerializer): 'update_at', ) - read_only_fields = ( - 'id', - 'created_at', - 'update_at', - ) + read_only_fields = ( + 'id', + 'created_at', + 'update_at', + ) + + +class ImageSerializer(serializers.ModelSerializer): + + class Meta: + model = Image + fields = ( + 'id', + 'course', + 'lesson', + 'title', + 'position', + 'created_at', + 'update_at', + ) + ('img',) + + read_only_fields = ( + 'id', + 'created_at', + 'update_at', + ) + + +class TextSerializer(serializers.ModelSerializer): + + class Meta: + model = Text + fields = ( + 'id', + 'course', + 'lesson', + 'title', + 'position', + 'created_at', + 'update_at', + ) + ('txt',) + + read_only_fields = ( + 'id', + 'created_at', + 'update_at', + ) + + +class ImageTextSerializer(serializers.ModelSerializer): + + class Meta: + model = ImageText + fields = ( + 'id', + 'course', + 'lesson', + 'title', + 'position', + 'created_at', + 'update_at', + ) + ('img', 'txt',) + + read_only_fields = ( + 'id', + 'created_at', + 'update_at', + ) + + +class VideoSerializer(serializers.ModelSerializer): + + class Meta: + model = Video + fields = ( + 'id', + 'course', + 'lesson', + 'title', + 'position', + 'created_at', + 'update_at', + ) + ('url',) + + read_only_fields = ( + 'id', + 'created_at', + 'update_at', + ) diff --git a/api/v1/urls.py b/api/v1/urls.py index 31cd6ec3..cd13a131 100644 --- a/api/v1/urls.py +++ b/api/v1/urls.py @@ -9,6 +9,8 @@ from drf_yasg import openapi from .views import ( CategoryViewSet, CourseViewSet, MaterialViewSet, LikeViewSet, + ImageViewSet, TextViewSet, + ImageTextViewSet, VideoViewSet, ) router = DefaultRouter() @@ -17,6 +19,11 @@ router.register(r'categories', CategoryViewSet, base_name='categories') router.register(r'materials', MaterialViewSet, base_name='materials') router.register(r'likes', LikeViewSet, base_name='likes') +router.register(r'images', ImageViewSet, base_name='images') +router.register(r'texts', TextViewSet, base_name='texts') +router.register(r'image-texts', ImageTextViewSet, base_name='image-texts') +router.register(r'videos', VideoViewSet, base_name='videos') + schema_view = get_schema_view( openapi.Info( diff --git a/api/v1/views.py b/api/v1/views.py index 274aa545..64f9e7cb 100644 --- a/api/v1/views.py +++ b/api/v1/views.py @@ -4,9 +4,12 @@ from . import ExtendedModelViewSet from .serializers import ( CategorySerializer, CourseSerializer, MaterialSerializer, LikeSerializer, + ImageSerializer, TextSerializer, + ImageTextSerializer, VideoSerializer, ) from apps.course.models import Category, Course, Material, Like +from apps.content.models import Image, Text, ImageText, Video class MaterialViewSet(ExtendedModelViewSet): @@ -32,3 +35,31 @@ class CourseViewSet(ExtendedModelViewSet): ).all() serializer_class = CourseSerializer filter_fields = ('category',) + + +class ImageViewSet(ExtendedModelViewSet): + queryset = Image.objects.select_related( + 'course', 'lesson' + ).all() + serializer_class = ImageSerializer + + +class TextViewSet(ExtendedModelViewSet): + queryset = Text.objects.select_related( + 'course', 'lesson' + ).all() + serializer_class = TextSerializer + + +class ImageTextViewSet(ExtendedModelViewSet): + queryset = ImageText.objects.select_related( + 'course', 'lesson' + ).all() + serializer_class = ImageTextSerializer + + +class VideoViewSet(ExtendedModelViewSet): + queryset = Video.objects.select_related( + 'course', 'lesson' + ).all() + serializer_class = VideoSerializer