Source code for werewolf.triggers

__title__ = 'werewolf.triggers'
__version__ = '0.4'
__build__ = 0x000004
__author__ = 'Artur Barseghyan <artur.barseghyan@gmail.com>'
__all__ = ('WerewolfBaseTrigger', 'registry')

[docs]class WerewolfBaseTrigger(object): """ Werewolf base trigger. """ def __init__(self, obj, request): self.obj = obj self.request = request def process(self): raise NotImplementedError("You should define a ``process`` method in your trigger class!")
class WerewolfRegistry(object): """ Trigger registry. Register all your werewolf triggers subclassed from ``werewolf.triggers.WerewolfBaseTrigger`` as follows: >>> from werewolf.triggers import WerewolfBaseTrigger, registry >>> >>> # Our trigger >>> class StatusExampleTrigger(WerewolfBaseTrigger): >>> def process(self): >>> print 'status triggered' >>> >>> registry.register('your-app-label', 'your-module-name', 'status-to-catch', StatusExampleTrigger) """ def __init__(self): self._registry = {} def __make_key(self, app_label, module_name, status): return '%s.%s:%status' % (app_label, module_name, status) def register(self, app_label, module_name, status, trigger_class): """ Registers the trigger into the global registry. :param str app_label: :param str module_name: :param str status: :param str werewolf.triggers.WerewolfBaseTrigger: Subclass of ``werewolf.triggers.WerewolfBaseTrigger``. """ self._registry[self.__make_key(app_label, module_name, status)] = trigger_class def register_for_model(self, model, status, trigger_class): self._registry[self.__make_key(model._metal.app_label, model._meta.module_name, status)] = trigger_class def get(self, app_label, module_name, status): """ Gets the trigger from global trigger registry. :param str app_label: :param str module_name: :param str status: :return werewolf.triggers.WerewolfBaseTrigger: Subclass of ``werewolf.triggers.WerewolfBaseTrigger``. """ key = self.__make_key(app_label, module_name, status) if key in self._registry: return self._registry[key] def get_for_model(self, model, status): return self.get(model._meta.app_label, model._meta.module_name, status) # Register triggers by calling registry.register() registry = WerewolfRegistry()
Read the Docs v: latest
Versions
latest
Downloads
PDF
HTML
Epub
On Read the Docs
Project Home
Builds

Free document hosting provided by Read the Docs.