notification typesΒΆ

Notification types are app specific. Custom apps define custom NotificationTypes. In the simplest case, all you need is a identifier for your custom NotificationType:

from notifyme.notification_types.base import BaseNotificationType

class PrinterOnFireNotification(BaseNotificationType):
    identifier = 'printer_on_fire'

But you can do so much more. Here is a more complete example:

from notifyme.notification_types.base import BaseNotificationType
import datetime

class PrinterOnFireNotification(BaseNotificationType):
    identifier = 'printer_on_fire'

    def can_send(self, user, backend):
        """
        Never send PrinterOnFireNotifications to 'kristian' after 3 o'clock.
        """
        if user.username == 'kristian' and datetime.datetime.now().time()>datetime.time(15,0):
            return False
        return True

    def get_context(self, language=None):
        """
        perform any context altering actions before the notification is rendered. At this point the active language
        will be set correctly for the user. This is where language specific stuff for the context can be changed.
        This context is shared for all users receiving the notification.
        """
        context = super(PrinterOnFireNotification, self).get_context(language=language)
        if language=='de':
             context.update({'show_special_link_for_german_only': True})
        return context

    def get_user_context(self, user, language=None):
        """
        Same as 'get_context', but gets called for each individual user that receives the notice.
        """
        context = super(PrinterOnFireNotification, self).get_user_context(language=language)
        if user.username=='kristian':
            context.update({'show_trollface': True})
        return context

Project Versions

Previous topic

Quickstart

Next topic

delivery backends

This Page