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)
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)