diff --git a/opentech/apply/activity/messaging.py b/opentech/apply/activity/messaging.py index 9ff1e0251ce0fb6d896c849eaa4a8889bf30f15d..d38841979716887ec80ee92c46a5ea6067299075 100644 --- a/opentech/apply/activity/messaging.py +++ b/opentech/apply/activity/messaging.py @@ -98,10 +98,10 @@ class AdapterBase: self.process_send(message_type, recipients, events, request, user, submissions=submissions, submission=None, related=related, **kwargs) def process(self, message_type, event, request, user, submission, related=None, **kwargs): - recipients = self.recipients(message_type, **kwargs) + recipients = self.recipients(message_type, submission=submission, **kwargs) self.process_send(message_type, recipients, [event], request, user, submission, related=related, **kwargs) - def process_send(self, message_type, recipients, events, request, user, submission, submissions=None, related=None, **kwargs): + def process_send(self, message_type, recipients, events, request, user, submission, submissions=list(), related=None, **kwargs): kwargs = { 'request': request, 'user': user, @@ -125,7 +125,7 @@ class AdapterBase: else: status = 'Message not sent as SEND_MESSAGES==FALSE' - message_logs.update_status = status + message_logs.update_status(status) if not settings.SEND_MESSAGES: if recipient: @@ -244,7 +244,7 @@ class ActivityAdapter(AdapterBase): try: # If this was a batch action we want to pull out the submission submission = submissions[0] - except TypeError: + except IndexError: pass Activity.actions.create( diff --git a/opentech/apply/activity/models.py b/opentech/apply/activity/models.py index 4712437346508a82cdb629f273f222fb41caa843..ea3e7101324996b16082ff1d3694b1d6b388ec6c 100644 --- a/opentech/apply/activity/models.py +++ b/opentech/apply/activity/models.py @@ -136,12 +136,13 @@ class Event(models.Model): class MessagesQueryset(models.QuerySet): def update_status(self, status): - return self.update( - status=Case( - When(status='', then=Value(status)), - default=Concat('status', Value('<br />' + status)) + if status: + return self.update( + status=Case( + When(status='', then=Value(status)), + default=Concat('status', Value('<br />' + status)) + ) ) - ) update_status.queryset_only = True diff --git a/opentech/apply/activity/tasks.py b/opentech/apply/activity/tasks.py index d0d920c3e8aec1c95b52c45ed62a3afde57b4a37..efbaef51c7d036ee43833b0e980ffc243ebee539 100644 --- a/opentech/apply/activity/tasks.py +++ b/opentech/apply/activity/tasks.py @@ -17,7 +17,7 @@ def send_mail(subject, message, from_address, recipients, logs=None): 'from_email': from_address, 'to': recipients, }, - link=update_message_status.s(log.values_list('id', flat=True)), + link=update_message_status.s(logs.values_list('id', flat=True)), ) @@ -44,6 +44,6 @@ def send_mail_task(**kwargs): @app.task def update_message_status(response, message_ids): from .models import Message - message = Message.objects.filter(id__in=message_ids) - message.external_id = response['id'] - message.update_status(response['status']) + messages = Message.objects.filter(id__in=message_ids) + messages.update(external_id=response['id']) + messages.update_status(response['status']) diff --git a/opentech/apply/activity/tests/test_messaging.py b/opentech/apply/activity/tests/test_messaging.py index d804f3c4f52f815e9b8376e62ea926cd269b3574..4b9838aaf062e2106768f668114736621d0c2d4a 100644 --- a/opentech/apply/activity/tests/test_messaging.py +++ b/opentech/apply/activity/tests/test_messaging.py @@ -193,7 +193,7 @@ class TestActivityAdapter(TestCase): user = UserFactory() submission = ApplicationSubmissionFactory() - self.adapter.send_message(message, user=user, submission=submission, related=None) + self.adapter.send_message(message, user=user, submission=submission, submissions=[], related=None) self.assertEqual(Activity.objects.count(), 1) activity = Activity.objects.first() @@ -271,7 +271,7 @@ class TestActivityAdapter(TestCase): def test_lead_not_saved_on_activity(self): submission = ApplicationSubmissionFactory() user = UserFactory() - self.adapter.send_message('a message', user=user, submission=submission, related=user) + self.adapter.send_message('a message', user=user, submission=submission, submissions=[], related=user) activity = Activity.objects.first() self.assertEqual(activity.related_object, None) @@ -279,7 +279,7 @@ class TestActivityAdapter(TestCase): submission = ApplicationSubmissionFactory() user = UserFactory() review = ReviewFactory(submission=submission) - self.adapter.send_message('a message', user=user, submission=submission, related=review) + self.adapter.send_message('a message', user=user, submission=submission, submissions=[], related=review) activity = Activity.objects.first() self.assertEqual(activity.related_object, review)