def make_response(self): """ Use this method to build a descriptive error response for the empty PATCH request situation. """ return Response(status=status.HTTP_400_BAD_REQUEST, data=settings.EMPTY_PATCH_ERROR_RESPONSE, headers=generate_warning_header_dict( settings.EMPTY_PATCH_ERROR_RESPONSE['detail']))
def make_response(self): """ Use this method to build a descriptive error response for the empty PATCH request situation. """ return Response( status=status.HTTP_400_BAD_REQUEST, data=settings.EMPTY_PATCH_ERROR_RESPONSE, headers=generate_warning_header_dict(settings.EMPTY_PATCH_ERROR_RESPONSE['detail']) )
def create(self, request, *args, **kwargs): """ __Method__: POST __URL__: $LINK:bugzillacomponent-list$ __Data__: { "name": "string", # required "parent_pk: (default=None)": "int" # optional } __Response__: %(SERIALIZER)s __NOTE__: Root bugzilla component will be created if parent_pk is not given or {"parent_pk": null} """ data = request.data serializer_class = self.get_serializer_class() extra_keys = set(data.keys()) - serializer_class().get_allowed_keys() StrictSerializerMixin.maybe_raise_error(extra_keys) name = data.get('name') parent_pk = data.get('parent_pk') if type(parent_pk) not in (types.IntType, types.NoneType): return Response({'detail': 'Parent_pk is not typeof int or Nonetype.'}, status=status.HTTP_400_BAD_REQUEST) p_bc = None if name is None or name.strip() == "": return Response({'detail': 'Missing bugzilla component name.'}, status=status.HTTP_400_BAD_REQUEST) if parent_pk is not None: try: p_bc = BugzillaComponent.objects.get(pk=parent_pk) except BugzillaComponent.DoesNotExist: return Response({'detail': 'Parent bugzilla component with pk %s does not exist' % parent_pk}, status=status.HTTP_404_NOT_FOUND) try: bc, created = BugzillaComponent.objects.get_or_create( name=name, parent_component=p_bc) except ValidationError as exc: return Response(exc.message_dict, status=status.HTTP_400_BAD_REQUEST) serializer = serializer_class(instance=bc, data=request.data, context={'request': request}) if not serializer.is_valid(): return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) if created: self.perform_create(serializer) headers = self.get_success_headers(serializer.data) return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers) else: return Response(serializer.data, status=status.HTTP_200_OK, headers=generate_warning_header_dict("The bugzilla component already exists"))