diff --git a/opentech/apply/activity/messaging.py b/opentech/apply/activity/messaging.py index 08b612047cf174e14737947a7e32534111af5f0a..5e0f88023248b4f876e43ef348fd58617c47e7dc 100644 --- a/opentech/apply/activity/messaging.py +++ b/opentech/apply/activity/messaging.py @@ -16,12 +16,33 @@ class MESSAGES(Enum): COMMENT = 'comment' -class MessageAdapter: - def process(self, request, payload): - messages.add_message(request, messages.INFO, 'Hello world.') +class AdapterBase: + messages = {} + + def message(self, message_type, **kwargs): + message = self.messages[message_type] + try: + # see if its a method on the adapter + method = getattr(self, message) + except AttributeError: + return message.format(**kwargs) + else: + return method(**kwargs) + + def process(self, message_type, **kwargs): + try: + message = self.message(message_type, **kwargs) + except KeyError: + return + self.send_message(message, **kwargs) + + def send_message(self, message, **kwargs): + raise NotImplementedError() + -class ActivityAdapter: + +class ActivityAdapter(AdapterBase): messages = { MESSAGES.TRANSITION: 'Progressed from {old_phase.display_name} to {submission.phase}', MESSAGES.NEW_SUBMISSION: 'Submitted {submission.title} for {submission.page.title}', @@ -33,15 +54,6 @@ class ActivityAdapter: MESSAGES.NEW_REVIEW: 'Created a review for {submission.title}' } - def message(self, message_type, **kwargs): - message = self.messages[message_type] - try: - method = getattr(self, message) - except AttributeError: - return message.format(**kwargs) - else: - return method(**kwargs) - def reviewers_updated(self, added, removed, **kwargs): message = ['Reviewers updated.'] if added: @@ -54,15 +66,10 @@ class ActivityAdapter: return ' '.join(message) - def process(self, message_type, **kwargs): - try: - message = self.message(message_type, **kwargs) - except KeyError: - return - + def send_message(self, message, user, submission, **kwargs): Activity.actions.create( - user=kwargs['user'], - submission=kwargs['submission'], + user=user, + submission=submission, message=message, )