diff --git a/opentech/apply/activity/messaging.py b/opentech/apply/activity/messaging.py index 82b06812085ff6c4176c2e6e9c803b87d594bcc1..512f3ea6cf9a0ecb088860ac5d5c9c6752ca673e 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 d17c46c116be88d9dc0f52bf9ff13d899c45debd..5e25be9ee8ce507b873e54b91ac2f6a7232be6b5 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 196f7f48b3d5f511cd8cadc3960838b05112a13e..92a3dac03333f62070514cb4672c024e15d4ecb8 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)