LIL-276. Fix courses category bulk change endpoint.

remotes/origin/hasaccess
Ivlev Denis 8 years ago
parent bc1438721c
commit 1f39fc9811
  1. 7
      api/v1/serializers/course.py
  2. 27
      api/v1/views.py

@ -73,11 +73,8 @@ class CategorySerializer(serializers.ModelSerializer):
class CourseBulkChangeCategorySerializer(serializers.Serializer): class CourseBulkChangeCategorySerializer(serializers.Serializer):
category = serializers.IntegerField() old_category = serializers.IntegerField()
courses = serializers.ListField( new_category = serializers.IntegerField()
child=serializers.IntegerField(),
min_length=1,
)
class CourseCreateSerializer(DispatchContentMixin, class CourseCreateSerializer(DispatchContentMixin,

@ -106,20 +106,29 @@ class CourseViewSet(ExtendedModelViewSet):
serializer_class = self.get_serializer_class() serializer_class = self.get_serializer_class()
serializer = serializer_class(data=request.data) serializer = serializer_class(data=request.data)
if serializer.is_valid(): if serializer.is_valid():
category_id = serializer.validated_data['category'] old_category_id = serializer.validated_data['old_category']
courses_ids = serializer.validated_data['courses'] new_category_id = serializer.validated_data['new_category']
try: try:
category = Category.objects.get(id=category_id) old_category = Category.objects.get(id=old_category_id)
except Category.DoesNotExist: except Category.DoesNotExist:
return Response( 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, status=status.HTTP_400_BAD_REQUEST,
) )
else: try:
c = Course.objects.filter( new_category = Category.objects.get(id=new_category_id)
id__in=courses_ids, except Category.DoesNotExist:
).update(category=category) return Response(
return Response({'success': True}) {'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: else:
return Response( return Response(
{'success': False}, {'success': False},

Loading…
Cancel
Save