Source code for thorn.django.managers
"""Django Managers and query sets."""
from __future__ import absolute_import, unicode_literals
from django.db import models
from django.db.models.query import Q
__all__ = ['SubscriberQuerySet', 'SubscriberManager']
[docs]class SubscriberQuerySet(models.QuerySet):
[docs] def matching(self, event, user=None):
return self.matching_event(event).matching_user_or_all(user)
[docs] def matching_event(self, event):
topic, _, rest = event.partition('.')
# order.completed
# order.*
# *.completed
return self.filter(
Q(event__exact=event) |
Q(event__exact='{0}.*'.format(topic)) |
Q(event__exact='*.{0}'.format(rest))
)
[docs] def matching_user_or_all(self, user):
return self.filter(user=user) if user else self
[docs]class SubscriberManager(models.Manager.from_queryset(SubscriberQuerySet)):
pass