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.
This commit is contained in:
Deimos
2020-01-22 18:56:35 -07:00
parent 2434e06e93
commit 9eec00cc6a

View File

@@ -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
)