From d891c7089cffec8d9fdd3da82b1bb032fc14a90a Mon Sep 17 00:00:00 2001 From: gzbender Date: Wed, 24 Oct 2018 22:44:08 +0500 Subject: [PATCH] =?UTF-8?q?LIL-704=20=D0=9F=D0=BE=D1=87=D0=B8=D0=BD=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D0=B2=D1=8B=D0=BF=D0=B0=D0=B4=D0=B0=D1=8E=D1=89?= =?UTF-8?q?=D0=B8=D0=B9=20=D1=81=D0=BF=D0=B8=D1=81=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/v1/serializers/course.py | 19 +++++-------------- api/v1/views.py | 21 +++++++++++++++++---- requirements.txt | 1 + 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/api/v1/serializers/course.py b/api/v1/serializers/course.py index 551830ad..781af25e 100644 --- a/api/v1/serializers/course.py +++ b/api/v1/serializers/course.py @@ -1,9 +1,8 @@ +from django.contrib.auth import get_user_model from ipware import get_client_ip - from rest_framework import serializers from rest_framework.validators import UniqueValidator - -from django.contrib.auth import get_user_model +from drf_dynamic_fields import DynamicFieldsMixin from apps.course.models import ( Category, Course, @@ -13,17 +12,9 @@ from apps.course.models import ( LiveLessonComment) from .content import ( ImageObjectSerializer, ContentSerializer, ContentCreateSerializer, - GallerySerializer, GalleryImageSerializer, -) - -from apps.content.models import ( - Content, Image, Text, ImageText, Video, - Gallery, GalleryImage, ImageObject, - ContestWork) - -from .user import UserSerializer + GallerySerializer, ) from .mixins import DispatchContentMixin, DispatchGalleryMixin, DispatchMaterialMixin - +from .user import UserSerializer User = get_user_model() @@ -269,7 +260,7 @@ class LessonSerializer(serializers.ModelSerializer): ) -class CourseSerializer(serializers.ModelSerializer): +class CourseSerializer(DynamicFieldsMixin, serializers.ModelSerializer): author = UserSerializer() category = CategorySerializer() materials = MaterialSerializer(many=True) diff --git a/api/v1/views.py b/api/v1/views.py index f792972b..744ab371 100644 --- a/api/v1/views.py +++ b/api/v1/views.py @@ -18,7 +18,7 @@ from .serializers.course import ( MaterialSerializer, MaterialCreateSerializer, LessonSerializer, LessonCreateSerializer, LikeCreateSerializer, CourseCommentSerializer, LessonCommentSerializer, - LiveLessonCommentSerializer) + LiveLessonCommentSerializer,) from .serializers.content import ( BanerSerializer, ImageSerializer, ImageCreateSerializer, @@ -36,8 +36,7 @@ from .serializers.school import ( ) from .serializers.payment import ( AuthorBalanceSerializer, AuthorBalanceCreateSerializer, - PaymentSerializer, CoursePaymentSerializer, - SchoolPaymentSerializer, + PaymentSerializer, CoursePaymentCreateSerializer, SchoolPaymentCreateSerializer) from .serializers.user import ( AuthorRequestSerializer, @@ -48,7 +47,7 @@ from .serializers.contest import ( ) from .permissions import ( - IsAdmin, IsAdminOrIsSelf, + IsAdmin, IsAuthorOrAdmin, IsAuthorObjectOrAdmin, IsTeacherOrAdmin, ) @@ -240,6 +239,20 @@ class CourseViewSet(ExtendedModelViewSet): # 'delete': IsAdmin, # } + def list(self, request, *args, **kwargs): + queryset = self.filter_queryset(self.get_queryset()) + + if request.query_params.get('page'): + page = self.paginate_queryset(queryset) + if page is not None: + serializer = self.get_serializer(page, many=True) + return self.get_paginated_response(serializer.data) + else: + return Response({'results': []}) + + serializer = self.get_serializer(queryset, many=True) + return Response(serializer.data) + @list_route(methods=['get']) def draft(self, request): drafts = Course.objects.filter(author=request.user, status=Course.DRAFT) diff --git a/requirements.txt b/requirements.txt index 052bb32e..27daa65a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -33,3 +33,4 @@ django-imagekit pusher==2.0.1 short_url sendgrid +drf_dynamic_fields