LIL-163-167. Add serializer, viewset, route for Image, Text, ImageText, Video models

remotes/origin/hasaccess
Ivlev Denis 8 years ago
parent 815089685e
commit 3412647846
  1. 95
      api/v1/serializers.py
  2. 7
      api/v1/urls.py
  3. 31
      api/v1/views.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',
)

@ -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(

@ -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

Loading…
Cancel
Save