diff --git a/opentech/apply/activity/messaging.py b/opentech/apply/activity/messaging.py index 1383f655e508fea1a23aa02616dffa6d28ff37ef..a7cb75e0afddeb0094c57b55fb515547cb29ac91 100644 --- a/opentech/apply/activity/messaging.py +++ b/opentech/apply/activity/messaging.py @@ -189,7 +189,8 @@ class ActivityAdapter(AdapterBase): visibility = kwargs.get('visibility', PUBLIC) related = kwargs['related'] - if isinstance(related, models.Model): + has_correct_fields = all(hasattr(related, attr) for attr in ['author', 'submission', 'get_absolute_url']) + if has_correct_fields and isinstance(related, models.Model): related_object = related else: related_object = None diff --git a/opentech/apply/activity/tests/test_messaging.py b/opentech/apply/activity/tests/test_messaging.py index 48359c0d2812e340868d0d47ddd29154798f38b2..d804f3c4f52f815e9b8376e62ea926cd269b3574 100644 --- a/opentech/apply/activity/tests/test_messaging.py +++ b/opentech/apply/activity/tests/test_messaging.py @@ -11,6 +11,7 @@ from django.contrib.messages import get_messages from opentech.apply.utils.testing import make_request from opentech.apply.funds.tests.factories import ApplicationSubmissionFactory +from opentech.apply.review.tests.factories import ReviewFactory from opentech.apply.users.tests.factories import ReviewerFactory, UserFactory from ..models import Activity, Event, Message, INTERNAL, PUBLIC @@ -267,6 +268,21 @@ class TestActivityAdapter(TestCase): self.assertIn(submission.phase.display_name, message) self.assertIn(old_phase.display_name, message) + def test_lead_not_saved_on_activity(self): + submission = ApplicationSubmissionFactory() + user = UserFactory() + self.adapter.send_message('a message', user=user, submission=submission, related=user) + activity = Activity.objects.first() + self.assertEqual(activity.related_object, None) + + def test_review_saved_on_activtiy(self): + submission = ApplicationSubmissionFactory() + user = UserFactory() + review = ReviewFactory(submission=submission) + self.adapter.send_message('a message', user=user, submission=submission, related=review) + activity = Activity.objects.first() + self.assertEqual(activity.related_object, review) + class TestSlackAdapter(AdapterMixin, TestCase): target_url = 'https://my-slack-backend.com/incoming/my-very-secret-key' diff --git a/opentech/settings/base.py b/opentech/settings/base.py index 9dd20ddfa73ef003f5011bea3c2fded7b4c02cdc..fb39394186581b10c4c316deb34e0a6de93ce67c 100644 --- a/opentech/settings/base.py +++ b/opentech/settings/base.py @@ -335,6 +335,11 @@ LOGGING = { 'level': 'INFO', 'propagate': False, }, + 'django': { + 'handlers': ['console', 'sentry'], + 'level': 'ERROR', + 'propagate': False, + }, 'django.request': { 'handlers': ['console', 'sentry'], 'level': 'WARNING',