Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
from enum import Enum
from django.contrib import messages
from .models import Activity
class MESSAGES(Enum):
UPDATE_LEAD = 'update_lead'
class MessageAdapter:
def process(self, request, payload):
messages.add_message(request, messages.INFO, 'Hello world.')
class ActivityAdapter:
messages = {
MESSAGES.UPDATE_LEAD: 'Lead changed from {old.lead} to {new.lead}',
}
def message(self, message_type):
return self.messages[message_type]
def process(self, message_type, **kwargs):
try:
message = self.message(message_type)
except KeyError:
return
Activity.actions.create(
user=kwargs['user'],
submission=kwargs['submission'],
message=message.format(**kwargs),
)
class MessengerBackend:
adapters = [ActivityAdapter()]
def __call__(self, message_type, user, submission, **kwargs):
return self.send(message_type, user=user, submission=submission, **kwargs)
def send(self, message_type, **kwargs):
for adapter in self.adapters:
adapter.process(message_type, **kwargs)
messenger = MessengerBackend()