You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
352 lines
7.0 KiB
352 lines
7.0 KiB
from django.contrib.auth import get_user_model
|
|
from rest_framework import serializers
|
|
|
|
from . import Base64ImageField
|
|
|
|
from apps.course.models import Category, Course, Material, Lesson, Like
|
|
from apps.content.models import (
|
|
Image, Text, ImageText, Video,
|
|
Gallery, GalleryImage, ImageObject,
|
|
)
|
|
|
|
User = get_user_model()
|
|
|
|
|
|
class ImageObjectSerializer(serializers.ModelSerializer):
|
|
image = Base64ImageField(
|
|
required=True, allow_empty_file=False, allow_null=False, read_only=False,
|
|
)
|
|
|
|
class Meta:
|
|
model = ImageObject
|
|
fields = (
|
|
'id',
|
|
'image',
|
|
'created_at',
|
|
'update_at',
|
|
)
|
|
|
|
read_only_fields = (
|
|
'id',
|
|
'created_at',
|
|
'update_at',
|
|
)
|
|
|
|
|
|
class GallerySerializer(serializers.ModelSerializer):
|
|
|
|
class Meta:
|
|
model = Gallery
|
|
fields = (
|
|
'id',
|
|
'title',
|
|
'created_at',
|
|
'update_at',
|
|
)
|
|
|
|
read_only_fields = (
|
|
'id',
|
|
'created_at',
|
|
'update_at',
|
|
)
|
|
|
|
|
|
class GalleryImageCreateSerializer(serializers.ModelSerializer):
|
|
|
|
class Meta:
|
|
model = GalleryImage
|
|
fields = (
|
|
'id',
|
|
'gallery',
|
|
'img',
|
|
'created_at',
|
|
'update_at',
|
|
)
|
|
|
|
read_only_fields = (
|
|
'id',
|
|
'created_at',
|
|
'update_at',
|
|
)
|
|
|
|
|
|
class GalleryImageSerializer(GalleryImageCreateSerializer):
|
|
img = ImageObjectSerializer()
|
|
|
|
|
|
class MaterialSerializer(serializers.ModelSerializer):
|
|
|
|
class Meta:
|
|
model = Material
|
|
fields = (
|
|
'id',
|
|
'title',
|
|
'cover',
|
|
'short_description',
|
|
'created_at',
|
|
'update_at',
|
|
)
|
|
|
|
read_only_fields = (
|
|
'id',
|
|
'cover',
|
|
'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):
|
|
|
|
class Meta:
|
|
model = Category
|
|
fields = (
|
|
'id',
|
|
'title',
|
|
)
|
|
|
|
read_only_fields = (
|
|
'id',
|
|
)
|
|
|
|
|
|
class CourseCreateSerializer(serializers.ModelSerializer):
|
|
|
|
class Meta:
|
|
model = Course
|
|
fields = (
|
|
'id',
|
|
'author',
|
|
'title',
|
|
'short_description',
|
|
'from_author',
|
|
'cover',
|
|
'price',
|
|
'is_infinite',
|
|
'deferred_start_at',
|
|
'category',
|
|
'duration',
|
|
'is_featured',
|
|
'url',
|
|
'status',
|
|
'likes',
|
|
'materials',
|
|
'created_at',
|
|
'update_at',
|
|
'content',
|
|
'gallery',
|
|
)
|
|
|
|
read_only_fields = (
|
|
'id',
|
|
'content',
|
|
'created_at',
|
|
'update_at',
|
|
)
|
|
|
|
|
|
class CourseSerializer(CourseCreateSerializer):
|
|
category = CategorySerializer()
|
|
materials = MaterialSerializer(many=True)
|
|
cover = ImageObjectSerializer()
|
|
gallery = GallerySerializer()
|
|
|
|
|
|
class LessonCreateSerializer(serializers.ModelSerializer):
|
|
|
|
class Meta:
|
|
model = Lesson
|
|
fields = (
|
|
'id',
|
|
'title',
|
|
'short_description',
|
|
'course',
|
|
'cover',
|
|
'content',
|
|
'created_at',
|
|
'update_at',
|
|
)
|
|
|
|
read_only_fields = (
|
|
'id',
|
|
'content',
|
|
'created_at',
|
|
'update_at',
|
|
)
|
|
|
|
|
|
class LessonSerializer(LessonCreateSerializer):
|
|
course = CourseSerializer()
|
|
cover = ImageObjectSerializer()
|
|
|
|
|
|
class ImageCreateSerializer(serializers.ModelSerializer):
|
|
|
|
class Meta:
|
|
model = Image
|
|
fields = (
|
|
'id',
|
|
'course',
|
|
'lesson',
|
|
'title',
|
|
'position',
|
|
'img',
|
|
'created_at',
|
|
'update_at',
|
|
)
|
|
|
|
read_only_fields = (
|
|
'id',
|
|
'created_at',
|
|
'update_at',
|
|
)
|
|
|
|
|
|
class ImageSerializer(ImageCreateSerializer):
|
|
course = CourseSerializer()
|
|
lesson = LessonSerializer()
|
|
img = ImageObjectSerializer()
|
|
|
|
|
|
class TextCreateSerializer(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 TextSerializer(TextCreateSerializer):
|
|
course = CourseSerializer()
|
|
lesson = LessonSerializer()
|
|
|
|
|
|
class ImageTextCreateSerializer(serializers.ModelSerializer):
|
|
|
|
class Meta:
|
|
model = ImageText
|
|
fields = (
|
|
'id',
|
|
'course',
|
|
'lesson',
|
|
'title',
|
|
'position',
|
|
'img',
|
|
'txt',
|
|
'created_at',
|
|
'update_at',
|
|
)
|
|
|
|
read_only_fields = (
|
|
'id',
|
|
'created_at',
|
|
'update_at',
|
|
)
|
|
|
|
|
|
class ImageTextSerializer(ImageTextCreateSerializer):
|
|
course = CourseSerializer()
|
|
lesson = LessonSerializer()
|
|
img = ImageObjectSerializer()
|
|
|
|
|
|
class VideoCreateSerializer(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',
|
|
)
|
|
|
|
|
|
class VideoSerializer(VideoCreateSerializer):
|
|
course = CourseSerializer()
|
|
lesson = LessonSerializer()
|
|
|
|
|
|
class UserSerializer(serializers.ModelSerializer):
|
|
|
|
class Meta:
|
|
model = User
|
|
fields = (
|
|
'id',
|
|
'username',
|
|
'email',
|
|
'first_name',
|
|
'last_name',
|
|
'is_staff',
|
|
'is_active',
|
|
'date_joined',
|
|
'role',
|
|
'gender',
|
|
'country',
|
|
'city',
|
|
'about',
|
|
'instagram',
|
|
'facebook',
|
|
'twitter',
|
|
'pinterest',
|
|
'youtube',
|
|
'vkontakte',
|
|
'fb_id',
|
|
'fb_data',
|
|
'is_email_proved',
|
|
'photo',
|
|
)
|
|
|
|
read_only_fields = (
|
|
'id',
|
|
'photo',
|
|
'date_joined',
|
|
'is_staff',
|
|
'fb_id',
|
|
'fb_data',
|
|
)
|
|
|
|
|
|
class UserPhotoSerializer(serializers.Serializer):
|
|
photo = Base64ImageField(
|
|
required=False, allow_empty_file=True, allow_null=True
|
|
)
|
|
|