示例#1
0
文件: views.py 项目: crs4/ACTIVE
    def post(self, request, format=None):
        """
        Method used to create a new Keyword object.
        If the provided keyword already exists, the existing one is returned.
        The object data is provided in a serialized format.

        @param request: HttpRequest used to provide keywords data.
        @type request: HttpRequest
        @param format: The format used for object serialization.
        @type format: string
        @return: HttpResponse containing the id of the new Keyword object, error otherwise.
        @rtype: HttpResponse
        """
        logger.debug('Creating a new Keyword object')
        
        if 'description' in request.data:
            kw = find_keyword(request.data['description'])
            if kw:
                serializer = KeywordSerializer(kw)
                logger.debug('Keyword object found for string - ' + str(kw.description))
                return Response(serializer.data, status=status.HTTP_201_CREATED)

            serializer = KeywordSerializer(data=request.data)
            if serializer.is_valid() :
                serializer.save()
                logger.debug('New Keyword object saved ')
                return Response(serializer.data, status=status.HTTP_201_CREATED)

        logger.error('Provided data not valid for Keyword object')
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
示例#2
0
文件: views.py 项目: crs4/ACTIVE
    def put(self, request, pk, format=None):
        """
        Method used to update a Keyword object data, providing all
        fresh data in a serialized form.

        @param request: HttpRequest containing the updated Keyword field data.
        @type request: HttpRequest
        @param pk: Keyword primary key, used to retrieve object data.
        @type pk: int
        @param format: Format used for data serialization.
        @type format: string
        @return: HttpResponse
        @rtype: HttpResponse
        """
        with edit_lock:
            # check if the keyword already exists
            if 'description' in request.data:
                kw = find_keyword(request.data['description'])
                if kw:
                    serializer = KeywordSerializer(kw)
                    logger.debug('Keyword object found for string - ' + str(kw.description))
                    return Response(serializer.data, status=status.HTTP_200_OK)

            keyword = self.get_object(pk)
            serializer = KeywordSerializer(keyword, data=request.data, partial=True)
            if serializer.is_valid():
                serializer.save()
                logger.debug('Updated data for Keyword object with id ' + str(pk))
                return Response(serializer.data)

            logger.error('Error on update of Keyword object with id' + str(pk))
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)