7503 fix return data for bulk operations

This commit is contained in:
Arthur 2023-04-11 11:38:49 -07:00 committed by jeremystretch
parent b645b6d159
commit fc9555a7b2

View File

@ -418,14 +418,21 @@ class DeviceViewSet(ConfigContextQuerySetMixin, ConfigTemplateRenderMixin, NetBo
@transaction.atomic @transaction.atomic
def create(self, request, *args, **kwargs): def create(self, request, *args, **kwargs):
# do validate / create for each item in serial instead of validating all data at once # do validate / create for each item in serial instead of validating all data at once
data_list = request.data if isinstance(request.data, list) else [request.data, ] if is_bulk := isinstance(request.data, list):
return_data = []
data_list = request.data if is_bulk else [request.data, ]
for data in data_list: for data in data_list:
serializer = self.get_serializer(data=data) serializer = self.get_serializer(data=data)
serializer.is_valid(raise_exception=True) serializer.is_valid(raise_exception=True)
self.perform_create(serializer) self.perform_create(serializer)
headers = self.get_success_headers(serializer.data) headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers) if is_bulk:
return_data.append(serializer.data)
else:
return_data = serializer.data
return Response(return_data, status=status.HTTP_201_CREATED, headers=headers)
@action(detail=True, methods=['post'], url_path='render-config', renderer_classes=[JSONRenderer, TextRenderer]) @action(detail=True, methods=['post'], url_path='render-config', renderer_classes=[JSONRenderer, TextRenderer])
def render_config(self, request, pk): def render_config(self, request, pk):