def put(self, id): try: self.parser.add_argument('_id', required=True, help="Field id is mandatory") self.parser.add_argument('_rev', required=True, help="Field rev is mandatory") self.parser.add_argument('title', required=True, help="Field title is mandatory") self.parser.add_argument('location', required=True, help="Field location is mandatory") self.parser.add_argument('visibility', required=True, help="Field visibility is mandatory") self.parser.add_argument('multimedia', required=True, help="Field multimedia is mandatory") self.parser.add_argument('story_type', required=True, help="Field story_type is mandatory") self.parser.add_argument('user_id', required=True, help="Field user_id is mandatory") self._validate_author(id) args = self.parser.parse_args() body = json.loads(request.data.decode('utf-8')) storie = StorieModel.update_storie(id, body) UserActivityModel.log_storie_activity(storie["user_id"], storie["_id"], "EDIT") return ResponseBuilder.build_response(storie, 200) except BadRequest as ex: return ErrorHandler.create_error_response("Fields id, rev, title, location, user_id, visibility, multimedia and story_type are mandatory", 400) except NoStorieFoundException as e: return ErrorHandler.create_error_response(str(e), 404) except DataVersionException as e: return ErrorHandler.create_error_response(str(e), 409) except UserMismatchException as e: return ErrorHandler.create_error_response(str(e), 409) except DBConnectionError as e: return ErrorHandler.create_error_response(str(e), 500)
def delete(self, id): try: self._validate_author(id) body = json.loads(request.data.decode('utf-8')) storie_user_id = body['user_id'] storie = StorieModel.delete_storie(id, storie_user_id) UserActivityModel.log_storie_activity(storie["user_id"], storie["_id"], "DELETE") return ResponseBuilder.build_response(storie, 204) except NoStorieFoundException as e: return ErrorHandler.create_error_response(str(e), 404) except UserMismatchException as e: return ErrorHandler.create_error_response(str(e), 409) except DBConnectionError as e: return ErrorHandler.create_error_response(str(e), 500)
def post(self): try: self.parser.add_argument('title', required=True, help="Field title is mandatory") self.parser.add_argument('location', required=True, help="Field location is mandatory") self.parser.add_argument('visibility', required=True, help="Field visibility is mandatory") self.parser.add_argument('multimedia', required=True, help="Field multimedia is mandatory") self.parser.add_argument('story_type', required=True, help="Field story_type is mandatory") self.parser.add_argument('user_id', required=True, help="Field user_id is mandatory") args = self.parser.parse_args() validate_sender(args.get("user_id")) storie = self._create_user_storie_request(request) UserActivityModel.log_storie_activity(storie["user_id"], storie["_id"], "ADD") self._create_multimedia_file(args.get('title'), args.get('multimedia')) return storie except BadRequest as ex: return ErrorHandler.create_error_response( "Fields title, location, visibility, multimedia, user_id and story_type are mandatory", 400) except UserMismatchException as e: return ErrorHandler.create_error_response(str(e), 409) except DBConnectionError as e: return ErrorHandler.create_error_response(str(e), 500)