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.
 
 
 
 
 
 

308 lines
6.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,
)
User = get_user_model()
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):
class Meta:
model = Category
fields = (
'id',
'title',
)
read_only_fields = (
'id',
)
class CourseSerializer(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',
)
read_only_fields = (
'id',
'cover',
'created_at',
'update_at',
)
class LessonSerializer(serializers.ModelSerializer):
class Meta:
model = Lesson
fields = (
'id',
'title',
'short_description',
'course',
'cover',
'created_at',
'update_at',
)
read_only_fields = (
'id',
'cover',
'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',
'img',
'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',
'img',
'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',
)
class GallerySerializer(serializers.ModelSerializer):
class Meta:
model = Gallery
fields = (
'id',
'course',
'title',
'created_at',
'update_at',
)
read_only_fields = (
'id',
'created_at',
'update_at',
)
class GalleryImageSerializer(serializers.ModelSerializer):
class Meta:
model = GalleryImage
fields = (
'id',
'gallery',
'image',
'created_at',
'update_at',
)
read_only_fields = (
'id',
'image',
'created_at',
'update_at',
)
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 CoverImageSerializer(serializers.Serializer):
cover = Base64ImageField(
required=False, allow_empty_file=True, allow_null=True
)
class UserPhotoSerializer(serializers.Serializer):
photo = Base64ImageField(
required=False, allow_empty_file=True, allow_null=True
)
class ContentImageSerializer(serializers.Serializer):
img = Base64ImageField(
required=False, allow_empty_file=True, allow_null=True
)
class GalleryImageSerializer(serializers.Serializer):
image = Base64ImageField(
required=False, allow_empty_file=True, allow_null=True
)