def reset_notifications_for_mentions(comment): """ For given task and comment, delete all mention notifications related to the comment and recreate notifications for the mentions listed in the comment. """ Notification.delete_all_by(type="mention", comment_id=comment["id"]) notifications = [] task = tasks_service.get_task(comment["object_id"]) author_id = comment["person_id"] for recipient_id in comment["mentions"]: notification = create_notification( recipient_id, comment_id=comment["id"], author_id=author_id, task_id=comment["object_id"], type="mention", ) emails_service.send_mention_notification( recipient_id, author_id, comment, task ) notifications.append(notification) events.emit( "notification:new", {"notification_id": notification["id"], "person_id": recipient_id}, persist=False, ) return notifications
def create_notifications_for_task_and_comment(task, comment, change=False): """ For given task and comment, create a notification for every assignee to the task and to every person participating to this task. """ recipient_ids = get_notification_recipients(task) if comment["person_id"] in recipient_ids: recipient_ids.remove(comment["person_id"]) author_id = comment["person_id"] task = tasks_service.get_task(comment["object_id"]) for recipient_id in recipient_ids: try: notification = create_notification( recipient_id, comment_id=comment["id"], author_id=author_id, task_id=task["id"], read=False, change=change, type="comment", ) emails_service.send_comment_notification( recipient_id, author_id, comment, task ) events.emit( "notification:new", { "notification_id": notification["id"], "person_id": recipient_id, }, project_id=task["project_id"], persist=False, ) except PersonNotFoundException: pass for recipient_id in comment["mentions"]: if recipient_id != comment["person_id"]: notification = create_notification( recipient_id, comment_id=comment["id"], author_id=comment["person_id"], task_id=comment["object_id"], type="mention", ) emails_service.send_mention_notification( recipient_id, author_id, comment, task ) events.emit( "notification:new", { "notification_id": notification["id"], "person_id": recipient_id, }, project_id=task["project_id"], persist=False, ) return recipient_ids