Browse Source

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.
merge-requests/89/head
Deimos 5 years ago
parent
commit
9eec00cc6a
  1. 21
      tildes/tildes/models/comment/comment_notification.py

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

Loading…
Cancel
Save