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.
89 lines
2.3 KiB
89 lines
2.3 KiB
from django.contrib.auth import get_user_model
|
|
|
|
from rest_framework import viewsets
|
|
|
|
from . import ExtendedModelViewSet
|
|
from .serializers import (
|
|
CategorySerializer, CourseSerializer,
|
|
MaterialSerializer, LikeSerializer,
|
|
ImageSerializer, TextSerializer,
|
|
ImageTextSerializer, VideoSerializer,
|
|
GallerySerializer, GalleryImageSerializer,
|
|
UserSerializer,
|
|
)
|
|
|
|
from apps.course.models import Category, Course, Material, Like
|
|
from apps.content.models import (
|
|
Image, Text, ImageText, Video,
|
|
Gallery, GalleryImage,
|
|
)
|
|
|
|
User = get_user_model()
|
|
|
|
|
|
class MaterialViewSet(ExtendedModelViewSet):
|
|
queryset = Material.objects.all()
|
|
serializer_class = MaterialSerializer
|
|
|
|
|
|
class LikeViewSet(ExtendedModelViewSet):
|
|
queryset = Like.objects.select_related('user').all()
|
|
serializer_class = LikeSerializer
|
|
|
|
|
|
class CategoryViewSet(ExtendedModelViewSet):
|
|
queryset = Category.objects.all()
|
|
serializer_class = CategorySerializer
|
|
|
|
|
|
class CourseViewSet(ExtendedModelViewSet):
|
|
queryset = Course.objects.select_related(
|
|
'author', 'category'
|
|
).prefetch_related(
|
|
'likes', 'materials'
|
|
).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
|
|
|
|
|
|
class GalleryViewSet(ExtendedModelViewSet):
|
|
queryset = Gallery.objects.select_related('course').all()
|
|
serializer_class = GallerySerializer
|
|
|
|
|
|
class GalleryImageViewSet(ExtendedModelViewSet):
|
|
queryset = GalleryImage.objects.select_related('gallery').all()
|
|
serializer_class = GalleryImageSerializer
|
|
|
|
|
|
class UserViewSet(ExtendedModelViewSet):
|
|
queryset = User.objects.all()
|
|
serializer_class = UserSerializer
|
|
|