From 249a08478da79780ccc0d24b702c70fd09bb7701 Mon Sep 17 00:00:00 2001
From: Todd Dembrey <todd.dembrey@torchbox.com>
Date: Mon, 23 Jul 2018 15:32:17 +0100
Subject: [PATCH] Add new application message

---
 opentech/apply/activity/messaging.py |  2 ++
 opentech/apply/activity/models.py    | 13 -------------
 opentech/apply/funds/models.py       | 15 +++++++++++++++
 3 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/opentech/apply/activity/messaging.py b/opentech/apply/activity/messaging.py
index 82b068120..512f3ea6c 100644
--- a/opentech/apply/activity/messaging.py
+++ b/opentech/apply/activity/messaging.py
@@ -6,6 +6,7 @@ from .models import Activity
 
 class MESSAGES(Enum):
     UPDATE_LEAD = 'update_lead'
+    NEW_SUBMISSION = 'new_submission'
     NEW_DETERMINATION = 'new_determination'
     DETERMINATION_OUTCOME = 'determination_outcome'
     INVITED_TO_PROPOSAL = 'invited_to_proposal'
@@ -19,6 +20,7 @@ class MessageAdapter:
 
 class ActivityAdapter:
     messages = {
+        MESSAGES.NEW_SUBMISSION: 'Submitted {submission.title} for {submission.page.title}',
         MESSAGES.UPDATE_LEAD: 'Lead changed from {old.lead} to {new.lead}',
         MESSAGES.NEW_DETERMINATION: 'Created a determination for {submission.title}',
         MESSAGES.DETERMINATION_OUTCOME: 'Sent a {submission.determination.get_outcome_display} determination for {submission.title}:\r\n{determination.clean_message}',
diff --git a/opentech/apply/activity/models.py b/opentech/apply/activity/models.py
index d17c46c11..5e25be9ee 100644
--- a/opentech/apply/activity/models.py
+++ b/opentech/apply/activity/models.py
@@ -1,6 +1,5 @@
 from django.conf import settings
 from django.db import models
-from django.db.models.signals import post_save
 from django.dispatch import receiver
 
 from django_fsm.signals import post_transition
@@ -104,18 +103,6 @@ class Activity(models.Model):
         return [(choice, VISIBILITY[choice]) for choice in cls.visibility_for(user)]
 
 
-@receiver(post_save, sender=ApplicationSubmission)
-def log_submission_activity(sender, **kwargs):
-    if kwargs.get('created', False):
-        submission = kwargs.get('instance')
-
-        Activity.actions.create(
-            user=submission.user,
-            submission=submission,
-            message=f'Submitted {submission.title} for {submission.page.title}'
-        )
-
-
 @receiver(post_transition, sender=ApplicationSubmission)
 def log_status_update(sender, **kwargs):
     instance = kwargs['instance']
diff --git a/opentech/apply/funds/models.py b/opentech/apply/funds/models.py
index 196f7f48b..92a3dac03 100644
--- a/opentech/apply/funds/models.py
+++ b/opentech/apply/funds/models.py
@@ -10,6 +10,8 @@ from django.core.serializers.json import DjangoJSONEncoder
 from django.db import models
 from django.db.models import Q
 from django.db.models.expressions import RawSQL, OrderBy
+from django.db.models.signals import post_save
+from django.dispatch import receiver
 from django.http import Http404
 from django.template.loader import render_to_string
 from django.urls import reverse
@@ -33,6 +35,7 @@ from wagtail.core.fields import StreamField
 from wagtail.core.models import Orderable
 from wagtail.contrib.forms.models import AbstractEmailForm, AbstractFormSubmission
 
+from opentech.apply.activity.messaging import messenger, MESSAGES
 from opentech.apply.stream_forms.blocks import UploadableMediaBlock
 from opentech.apply.stream_forms.models import AbstractStreamForm, BaseStreamForm
 from opentech.apply.users.groups import REVIEWER_GROUP_NAME, STAFF_GROUP_NAME
@@ -950,6 +953,18 @@ class ApplicationSubmission(WorkflowHelpers, BaseStreamForm, AbstractFormSubmiss
         return f'<{self.__class__.__name__}: {self.user}, {self.round}, {self.page}>'
 
 
+@receiver(post_save, sender=ApplicationSubmission)
+def log_submission_activity(sender, **kwargs):
+    if kwargs.get('created', False):
+        submission = kwargs.get('instance')
+
+        messenger(
+            MESSAGES.NEW_APPLICATION,
+            user=submission.user,
+            submission=submission,
+        )
+
+
 class ApplicationRevision(models.Model):
     submission = models.ForeignKey(ApplicationSubmission, related_name='revisions', on_delete=models.CASCADE)
     form_data = JSONField(encoder=DjangoJSONEncoder)
-- 
GitLab