diff --git a/tildes/tildes/models/comment/comment_notification.py b/tildes/tildes/models/comment/comment_notification.py index 162c5aa..4c14797 100644 --- a/tildes/tildes/models/comment/comment_notification.py +++ b/tildes/tildes/models/comment/comment_notification.py @@ -16,6 +16,7 @@ from sqlalchemy.sql.expression import text from tildes.enums import CommentNotificationType from tildes.lib.markdown import LinkifyFilter from tildes.models import DatabaseModel +from tildes.models.topic import TopicIgnore from tildes.models.user import User from .comment import Comment @@ -82,6 +83,18 @@ class CommentNotification(DatabaseModel): if not comment.parent.user.is_real_user: return False + # check if the parent's author is ignoring the topic + if ( + Session.object_session(comment) + .query(TopicIgnore) + .filter( + TopicIgnore.user == comment.parent.user, + TopicIgnore.topic == comment.topic, + ) + .one_or_none() + ): + return False + return True @property @@ -123,6 +136,14 @@ class CommentNotification(DatabaseModel): if comment.parent.user == user: continue + # prevent mentioning users ignoring the topic + if ( + db_session.query(TopicIgnore) + .filter(TopicIgnore.user == user, TopicIgnore.topic == comment.topic) + .one_or_none() + ): + continue + mention_notification = cls( user, comment, CommentNotificationType.USER_MENTION )