def post(self, user=None): """Add a new entry The name has to be unique and is internally used as a variable name. The passed string is preprocessed before it is inserted into the database. Preprocessing: All characters are converted to lower case, the leading and trailing white spaces are removed, and intermediate white spaces are replaced with underscores ("_"). Do not pass a unique identifier since it is generated internally. synonyms (optional) deprecated (default=False) If a data type other than "cv" is added, the controlled_vocabullary is not considered. """ entry = Property(**api.payload) # Ensure that a passed controlled vocabulary is valid validate_controlled_vocabulary(entry) entry = entry.save() return { "message": f"Add entry '{entry.name}'", "id": str(entry.id) }, 201
def get(self): """ Fetch a list with all entries """ # Convert query parameters args = self.get_parser.parse_args() include_deprecate = args["deprecated"] if not include_deprecate: entries = Property.objects(deprecated=False).all() else: # Include entries which are deprecated entries = Property.objects().all() return list(entries)
def delete(self, id, user=None): """ Deprecates an entry given its unique identifier """ parser = reqparse.RequestParser() parser.add_argument("complete", type=inputs.boolean, default=False) args = parser.parse_args() force_delete = args["complete"] entry = Property.objects(id=id).get() if not force_delete: entry.update(deprecated=True) return {"message": f"Deprecate entry '{entry.name}'"} else: entry.delete() return {"message": f"Delete entry '{entry.name}'"}
def delete(self, user=None): """ Deprecates all entries """ parser = reqparse.RequestParser() parser.add_argument("complete", type=inputs.boolean, default=False) args = parser.parse_args() force_delete = args["complete"] entry = Property.objects().all() if not force_delete: entry.update(deprecated=True) return {"message": "Deprecate all entries"} else: entry.delete() return {"message": "Delete all entries"}
def put(self, id, user=None): """ Update entry given its unique identifier """ entry = Property.objects(id=id).first() entry.update(**api.payload) return {"message": f"Update entry '{entry.name}'"}
def get(self, id): """Fetch an entry given its unique identifier""" return Property.objects(id=id).get()