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