def post(self): try: self.parser.add_argument('message', required=True, help="Field message is mandatory") self.parser.add_argument('user_id', required=True, help="Field user_id is mandatory") self.parser.add_argument('storie_id', required=True, help="Field storie_id is mandatory") args = self.parser.parse_args() validate_sender(args.get('user_id')) comment = CommentModel.create_comment(args) UserActivityModel.log_comment_activity(comment["user_id"], comment["storie_id"], "ADD") return comment except BadRequest as ex: return ErrorHandler.create_error_response( "Fields message, user_id and storie_id are mandatory", 400) except NoUserDataFoundException as e: return ErrorHandler.create_error_response(str(e), 400) except NoStorieFoundException as e: return ErrorHandler.create_error_response(str(e), 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)
def delete(self, comment_id): try: self._validate_author(comment_id) comment = CommentModel.remove_comment(comment_id) UserActivityModel.log_comment_activity(comment["user_id"], comment["storie_id"], "DELETE") return self._get_comments_response(comment) except NoCommentFoundException 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 put(self, comment_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('storie_id', required=True, help="Field storie_id is mandatory") self.parser.add_argument('user_id', required=True, help="Field user_id is mandatory") self.parser.add_argument('message', required=True, help="Field message is mandatory") self._validate_author(comment_id) args = self.parser.parse_args() body = json.loads(request.data.decode('utf-8')) comment = CommentModel.update_comment(comment_id, body) UserActivityModel.log_comment_activity(comment["user_id"], comment["storie_id"], "EDIT") return ResponseBuilder.build_response(comment, 200) except BadRequest as ex: return ErrorHandler.create_error_response( "Fields id, rev, storie_id, user_id and message are mandatory", 400) except NoUserDataFoundException as e: return ErrorHandler.create_error_response(str(e), 400) except NoCommentFoundException 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)