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'])
     )
Example #3
0
    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"))
Example #4
0
    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"))