in Allura/allura/model/discuss.py [0:0]
def notify(self, file_info=None, notification_text=None):
if self.project.notifications_disabled:
return # notifications disabled for entire project
artifact = self.thread.artifact or self.thread
msg_id = artifact.url() + self._id
notification_params = dict(
post=self,
text=notification_text,
file_info=file_info)
n = Notification.query.get(_id=msg_id)
if n and 'Moderation action required' in n.subject:
# Existing notification for this artifact is for moderators only,
# this means artifact was not auto approved, and all the
# subscribers did not receive notification. Now, moderator approved
# artifact/post, so we should re-send actual notification
msg_id = 'approved-' + msg_id
n = Notification.query.get(_id=msg_id)
if n:
# 'approved' notification also exists, re-send
n.fire_notification_task([artifact, self.thread], 'message')
else:
# 'approved' notification does not exist, create
notification_params['message_id'] = msg_id
if not n:
# artifact is Forum (or artifact like WikiPage)
n = Notification.post(artifact, 'message',
additional_artifacts_to_match_subscriptions=self.thread,
**notification_params)
if not n:
return
if getattr(artifact, 'monitoring_email', None):
if hasattr(artifact, 'notify_post'):
if artifact.notify_post:
n.send_simple(artifact.monitoring_email)
else: # Send if no extra checks required
n.send_simple(artifact.monitoring_email)