Esempio n. 1
0
 def create(self, request, *args, **kwargs):
     if not self.versioned_object:
         return HttpResponse(status=status.HTTP_405_METHOD_NOT_ALLOWED)
     serializer = self.get_serializer(data=request.DATA,
                                      files=request.FILES)
     if serializer.is_valid():
         self.pre_save(serializer.object)
         try:
             self.object = serializer.save(
                 force_insert=True, versioned_object=self.versioned_object)
             if serializer.is_valid():
                 self.post_save(self.object, created=True)
                 headers = self.get_success_headers(serializer.data)
                 serializer = SourceVersionDetailSerializer(
                     self.object, context={'request': request})
                 return Response(serializer.data,
                                 status=status.HTTP_201_CREATED,
                                 headers=headers)
         except IntegrityError, e:
             result = {
                 'error':
                 str(e),
                 'detail':
                 'Source version  \'%s\' already exist. ' %
                 serializer.data.get('id')
             }
             return Response(result, status=status.HTTP_409_CONFLICT)
Esempio n. 2
0
    def update(self, request, *args, **kwargs):
        self.serializer_class = SourceVersionUpdateSerializer
        if not self.versioned_object:
            return HttpResponse(status=status.HTTP_405_METHOD_NOT_ALLOWED)

        self.object = self.get_object()
        created = False
        save_kwargs = {
            'force_update': True,
            'versioned_object': self.versioned_object
        }
        success_status_code = status.HTTP_200_OK

        serializer = self.get_serializer(self.object,
                                         data=request.DATA,
                                         files=request.FILES,
                                         partial=True)

        if serializer.is_valid():
            self.pre_save(serializer.object)
            self.object = serializer.save(**save_kwargs)
            if serializer.is_valid():
                self.post_save(self.object, created=created)
                serializer = SourceVersionDetailSerializer(
                    self.object, context={'request': request})
                return Response(serializer.data, status=success_status_code)

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Esempio n. 3
0
    def create(self, request, *args, **kwargs):
        if not self.versioned_object:
            return HttpResponse(status=status.HTTP_405_METHOD_NOT_ALLOWED)
        serializer = self.get_serializer(data=request.DATA,
                                         files=request.FILES)
        if serializer.is_valid():
            self.pre_save(serializer.object)
            self.object = serializer.save(
                force_insert=True, versioned_object=self.versioned_object)
            if serializer.is_valid():
                self.post_save(self.object, created=True)
                headers = self.get_success_headers(serializer.data)
                serializer = SourceVersionDetailSerializer(
                    self.object, context={'request': request})
                return Response(serializer.data,
                                status=status.HTTP_201_CREATED,
                                headers=headers)

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)