Source code for notifier.shortcuts

###############################################################################
## Imports
###############################################################################
# Python
from collections import Iterable

# Django
from django.contrib.auth.models import Permission
from django.db.models.query import QuerySet

# User
from notifier.models import Notification, Backend, UserPrefs


###############################################################################
## Code
###############################################################################
[docs]def create_notification(name, display_name=None, permissions=None, backends=None, public=True): if not display_name: display_name = name if backends: backends = _get_backend_queryset(backends) else: backends = Backend.objects.filter(enabled=True) if permissions: permissions = _get_permission_queryset(permissions) else: permissions = [] try: n = Notification.objects.get(name=name) except Notification.DoesNotExist: n = Notification.objects.create(name=name, display_name=display_name, public=public) n.permissions.add(*permissions) n.backends.add(*backends) else: n.name = name n.display_name = display_name n.public = public n.permissions = permissions n.backends = backends n.save() return n
[docs]def send_notification(name, users, context=None): try: notification = Notification.objects.get(name=name) except Notification.DoesNotExist: # write debug message pass else: notification.send(users, context)
[docs]def clear_preferences(users): return UserPrefs.objects.remove_user_prefs(users)
def _get_permission_queryset(permissions): if (permissions and not isinstance(permissions, QuerySet)): if isinstance(permissions, Permission): permissions = [permissions] else: if isinstance(permissions, basestring): permissions = [permissions] elif isinstance(permissions, Iterable): if not all(isinstance(x, basestring) for x in permissions): raise TypeError else: raise TypeError permissions = Permission.objects.filter(codename__in=permissions) return permissions def _get_backend_queryset(backends): if (backends and not isinstance(backends, QuerySet)): if isinstance(backends, Backend): backends = [backends] else: if isinstance(backends, basestring): backends = [backends] elif isinstance(backends, Iterable): if not all(isinstance(x, basestring) for x in backends): raise TypeError else: raise TypeError backends = Backend.objects.filter(name__in=backends) return backends