|
|
|
|
@ -10,7 +10,7 @@ from rest_framework.decorators import (detail_route, list_route, action, |
|
|
|
|
from rest_framework.response import Response |
|
|
|
|
from rest_framework.settings import api_settings |
|
|
|
|
|
|
|
|
|
from . import ExtendedModelViewSet |
|
|
|
|
from . import ExtendedModelViewSet, BothListFormatMixin |
|
|
|
|
|
|
|
|
|
from .serializers.config import ConfigSerializer |
|
|
|
|
from .serializers.course import ( |
|
|
|
|
@ -213,7 +213,7 @@ class LikeViewSet(ExtendedModelViewSet): |
|
|
|
|
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CategoryViewSet(ExtendedModelViewSet): |
|
|
|
|
class CategoryViewSet(BothListFormatMixin, ExtendedModelViewSet): |
|
|
|
|
queryset = Category.objects.order_by('-id') |
|
|
|
|
serializer_class = CategorySerializer |
|
|
|
|
search_fields = ('title',) |
|
|
|
|
@ -221,7 +221,7 @@ class CategoryViewSet(ExtendedModelViewSet): |
|
|
|
|
# permission_classes = (IsAdmin,) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CourseViewSet(ExtendedModelViewSet): |
|
|
|
|
class CourseViewSet(BothListFormatMixin, ExtendedModelViewSet): |
|
|
|
|
queryset = Course.objects.select_related( |
|
|
|
|
'author', 'category', 'cover', 'gallery', |
|
|
|
|
).prefetch_related( |
|
|
|
|
@ -243,20 +243,6 @@ 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) |
|
|
|
|
@ -735,7 +721,7 @@ class FAQViewSet(ExtendedModelViewSet): |
|
|
|
|
serializer_class = FAQSerializer |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class BonusesViewSet(ExtendedModelViewSet): |
|
|
|
|
class BonusesViewSet(BothListFormatMixin, ExtendedModelViewSet): |
|
|
|
|
queryset = UserBonus.objects.all() |
|
|
|
|
serializer_class = UserBonusCreateSerializer |
|
|
|
|
serializer_class_map = { |
|
|
|
|
@ -752,15 +738,3 @@ class BonusesViewSet(ExtendedModelViewSet): |
|
|
|
|
'referral__referral__first_name', |
|
|
|
|
'referral__referral__last_name', |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
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) |
|
|
|
|
|
|
|
|
|
serializer = self.get_serializer(queryset, many=True) |
|
|
|
|
return Response(serializer.data) |
|
|
|
|
|