Manage notifications and subscriptions

When an artifact is modified:

  • Notification generated by tool app

  • Search is made for subscriptions matching the notification

  • Notification is added to each matching subscriptions’ queue


  • For each subscriptions with notifications and direct delivery:
    • For each notification, enqueue as a separate email message

    • Clear subscription’s notification list

  • For each subscription with notifications and delivery due:
    • Enqueue one email message with all notifications

    • Clear subscription’s notification list

class allura.model.notification.Mailbox

Holds a queue of notifications for an artifact, or a user (webflash messages) for a subscriber. FIXME: describe the Mailbox concept better.

classmethod deliver(nid, artifact_index_ids, topic)

Called in the notification message handler to deliver notification IDs to the appropriate mailboxes. Atomically appends the nids to the appropriate mailboxes.


Send all notifications that this mailbox has enqueued.

classmethod fire_ready()

Fires all direct subscriptions with notifications as well as all summary & digest subscriptions with notifications that are ready. Clears the mailbox queue.

class allura.model.notification.Notification

Temporarily store notifications that will be emailed or displayed as a web flash. This does not contain any recipient information.

classmethod post(artifact, topic, additional_artifacts_to_match_subscriptions=None, **kw)

Create a notification and send the notify message

classmethod post_user(user, artifact, topic, **kw)

Create a notification and deliver directly to a user’s flash mailbox

class allura.model.notification.SiteNotification

Storage for site-wide notification.