def post_comment_reply(request: Request, markdown: str) -> dict: """Post a reply to a comment with Intercooler.""" parent_comment = request.context new_comment = Comment( topic=parent_comment.topic, author=request.user, markdown=markdown, parent_comment=parent_comment, ) request.db_session.add(new_comment) request.db_session.add( LogComment(LogEventType.COMMENT_POST, request, new_comment)) if CommentNotification.should_create_reply_notification(new_comment): notification = CommentNotification( parent_comment.user, new_comment, CommentNotificationType.COMMENT_REPLY) request.db_session.add(notification) _mark_comment_read_from_interaction(request, parent_comment) # commit and then re-query the new comment to get complete data request.tm.commit() new_comment = (request.query(Comment).join_all_relationships().filter_by( comment_id=new_comment.comment_id).one()) return {"comment": new_comment}
def post_toplevel_comment(request: Request, markdown: str) -> dict: """Post a new top-level comment on a topic with Intercooler.""" topic = request.context new_comment = Comment(topic=topic, author=request.user, markdown=markdown) request.db_session.add(new_comment) request.db_session.add(LogComment(LogEventType.COMMENT_POST, request, new_comment)) if CommentNotification.should_create_reply_notification(new_comment): notification = CommentNotification( topic.user, new_comment, CommentNotificationType.TOPIC_REPLY ) request.db_session.add(notification) # commit and then re-query the new comment to get complete data request.tm.commit() new_comment = ( request.query(Comment) .join_all_relationships() .filter_by(comment_id=new_comment.comment_id) .one() ) return {"comment": new_comment, "topic": topic}
def post_comment_on_topic(request: Request, markdown: str) -> HTTPFound: """Post a new top-level comment on a topic.""" topic = request.context new_comment = Comment(topic=topic, author=request.user, markdown=markdown) request.db_session.add(new_comment) request.db_session.add( LogComment(LogEventType.COMMENT_POST, request, new_comment)) if CommentNotification.should_create_reply_notification(new_comment): notification = CommentNotification(topic.user, new_comment, CommentNotificationType.TOPIC_REPLY) request.db_session.add(notification) raise HTTPFound(location=topic.permalink)
def post_comment_reply(request: Request, markdown: str) -> dict: """Post a reply to a comment with Intercooler.""" parent_comment = request.context wait_mins = _reply_wait_minutes(request, request.user, parent_comment.user) if wait_mins: incr_counter("comment_back_and_forth_warnings") raise HTTPUnprocessableEntity( f"You can't reply to this user yet. Please wait {wait_mins} minutes." ) new_comment = Comment( topic=parent_comment.topic, author=request.user, markdown=markdown, parent_comment=parent_comment, ) request.db_session.add(new_comment) request.db_session.add( LogComment(LogEventType.COMMENT_POST, request, new_comment)) if CommentNotification.should_create_reply_notification(new_comment): notification = CommentNotification( parent_comment.user, new_comment, CommentNotificationType.COMMENT_REPLY) request.db_session.add(notification) _mark_comment_read_from_interaction(request, parent_comment) # commit and then re-query the new comment to get complete data request.tm.commit() new_comment = (request.query(Comment).join_all_relationships().filter_by( comment_id=new_comment.comment_id).one()) return {"comment": new_comment}