From 9eec00cc6a16eb5ccf31118c935c3ddf1b946c3f Mon Sep 17 00:00:00 2001 From: Deimos Date: Wed, 22 Jan 2020 18:56:35 -0700 Subject: [PATCH] Prevent comment notifications from ignored topics This stops sending comment notifications from both replies and mentions if the potential notification recipient is ignoring the topic. --- .../models/comment/comment_notification.py | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) 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 )