diff --git a/api/v1/serializers/course.py b/api/v1/serializers/course.py index b2cfdb81..8139d8fa 100644 --- a/api/v1/serializers/course.py +++ b/api/v1/serializers/course.py @@ -73,11 +73,8 @@ class CategorySerializer(serializers.ModelSerializer): class CourseBulkChangeCategorySerializer(serializers.Serializer): - category = serializers.IntegerField() - courses = serializers.ListField( - child=serializers.IntegerField(), - min_length=1, - ) + old_category = serializers.IntegerField() + new_category = serializers.IntegerField() class CourseCreateSerializer(DispatchContentMixin, diff --git a/api/v1/views.py b/api/v1/views.py index 635012a2..56c65ff9 100644 --- a/api/v1/views.py +++ b/api/v1/views.py @@ -106,20 +106,29 @@ class CourseViewSet(ExtendedModelViewSet): 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'] + old_category_id = serializer.validated_data['old_category'] + new_category_id = serializer.validated_data['new_category'] try: - category = Category.objects.get(id=category_id) + old_category = Category.objects.get(id=old_category_id) except Category.DoesNotExist: return Response( - {'success': False, 'detail': f'Category with id {category_id} not found'}, + {'success': False, 'detail': f'Category with id {old_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}) + try: + new_category = Category.objects.get(id=new_category_id) + except Category.DoesNotExist: + return Response( + {'success': False, 'detail': f'Category with id {new_category_id} not found'}, + status=status.HTTP_400_BAD_REQUEST, + ) + + c = Course.objects.filter( + category=old_category, + ).update( + category=new_category + ) + return Response({'success': True}) else: return Response( {'success': False},