|
|
|
|
@ -10,6 +10,7 @@ from . import ExtendedModelViewSet |
|
|
|
|
from .serializers.course import ( |
|
|
|
|
CategorySerializer, LikeSerializer, |
|
|
|
|
CourseSerializer, CourseCreateSerializer, |
|
|
|
|
CourseBulkChangeCategorySerializer, |
|
|
|
|
MaterialSerializer, MaterialCreateSerializer, |
|
|
|
|
LessonSerializer, LessonCreateSerializer, |
|
|
|
|
) |
|
|
|
|
@ -82,6 +83,7 @@ class CourseViewSet(ExtendedModelViewSet): |
|
|
|
|
'list': CourseSerializer, |
|
|
|
|
'retrieve': CourseSerializer, |
|
|
|
|
'draft': CourseSerializer, |
|
|
|
|
'change_category_bulk': CourseBulkChangeCategorySerializer, |
|
|
|
|
} |
|
|
|
|
filter_fields = ('category', 'status', 'is_infinite', 'is_featured',) |
|
|
|
|
search_fields = ('author__email', 'title', 'category__title',) |
|
|
|
|
@ -99,6 +101,31 @@ class CourseViewSet(ExtendedModelViewSet): |
|
|
|
|
serialized_data = serializer(instance=drafts.last()) |
|
|
|
|
return Response(serialized_data.data) |
|
|
|
|
|
|
|
|
|
@list_route(methods=['patch'], url_path='change-category-bulk') |
|
|
|
|
def change_category_bulk(self, request): |
|
|
|
|
serializer_class = self.get_serializer_class() |
|
|
|
|
serializer = serializer_class(data=request.data) |
|
|
|
|
if serializer.is_valid(): |
|
|
|
|
category_id = serializer.validated_data['category'] |
|
|
|
|
courses_ids = serializer.validated_data['courses'] |
|
|
|
|
try: |
|
|
|
|
category = Category.objects.get(id=category_id) |
|
|
|
|
except Category.DoesNotExist: |
|
|
|
|
return Response( |
|
|
|
|
{'success': False, 'detail': f'Category with id {category_id} not found'}, |
|
|
|
|
status=status.HTTP_400_BAD_REQUEST, |
|
|
|
|
) |
|
|
|
|
else: |
|
|
|
|
c = Course.objects.filter( |
|
|
|
|
id__in=courses_ids, |
|
|
|
|
).update(category=category) |
|
|
|
|
return Response({'success': True}) |
|
|
|
|
else: |
|
|
|
|
return Response( |
|
|
|
|
{'success': False}, |
|
|
|
|
status=status.HTTP_400_BAD_REQUEST, |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class LessonViewSet(ExtendedModelViewSet): |
|
|
|
|
queryset = Lesson.objects.select_related( |
|
|
|
|
|