32 lines
921 B
Python
32 lines
921 B
Python
from __future__ import absolute_import, unicode_literals
|
|
|
|
from django.db import models
|
|
from django.utils.translation import ugettext as _
|
|
|
|
from actstream import action
|
|
|
|
|
|
class Event(object):
|
|
_labels = {}
|
|
|
|
@classmethod
|
|
def get_label(cls, name):
|
|
try:
|
|
return cls._labels[name]
|
|
except KeyError:
|
|
return _('Unknown or obsolete event type: {0}'.format(name))
|
|
|
|
def __init__(self, name, label):
|
|
self.name = name
|
|
self.label = label
|
|
self.event_type = None
|
|
self.__class__._labels[name] = label
|
|
|
|
def commit(self, actor=None, action_object=None, target=None):
|
|
model = models.get_model('events', 'EventType')
|
|
|
|
if not self.event_type:
|
|
self.event_type, created = model.objects.get_or_create(name=self.name)
|
|
|
|
action.send(actor or target, actor=actor, verb=self.name, action_object=action_object, target=target)
|