You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2012/10/02 23:30:28 UTC

[23/34] git commit: [#4737] ticket:174 do not send edit notifications for post if notifications disabled for entire project

[#4737] ticket:174 do not send edit notifications for post if notifications disabled for entire project


Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/3f844c9a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/3f844c9a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/3f844c9a

Branch: refs/heads/db/4968
Commit: 3f844c9afc04159384c76f2ea8048e783a718b31
Parents: 3d42e7f
Author: Igor Bondarenko <je...@gmail.com>
Authored: Mon Sep 24 17:18:03 2012 +0300
Committer: Dave Brondsema <db...@geek.net>
Committed: Fri Sep 28 14:58:08 2012 +0000

----------------------------------------------------------------------
 Allura/allura/model/discuss.py               |    3 +++
 Allura/allura/tests/model/test_discussion.py |   21 +++++++++++++++++++++
 2 files changed, 24 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/3f844c9a/Allura/allura/model/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/discuss.py b/Allura/allura/model/discuss.py
index 12aa456..0f6fcf1 100644
--- a/Allura/allura/model/discuss.py
+++ b/Allura/allura/model/discuss.py
@@ -587,12 +587,15 @@ class Post(Message, VersionedArtifact, ActivityObject):
                     related_nodes=[self.app_config.project])
 
     def notify(self, file_info=None, check_dup=False):
+        if self.project.notifications_disabled:
+            return  # notifications disabled for entire project
         artifact = self.thread.artifact or self.thread
         n = Notification.query.get(
             _id=artifact.url() + self._id) if check_dup else None
         if not n:
             n = Notification.post(artifact, 'message', post=self,
                                   file_info=file_info)
+        if not n: return
         if (hasattr(artifact, "monitoring_email")
                 and artifact.monitoring_email):
             if hasattr(artifact, 'notify_post'):

http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/3f844c9a/Allura/allura/tests/model/test_discussion.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/model/test_discussion.py b/Allura/allura/tests/model/test_discussion.py
index 03959f7..3124320 100644
--- a/Allura/allura/tests/model/test_discussion.py
+++ b/Allura/allura/tests/model/test_discussion.py
@@ -10,6 +10,7 @@ from cgi import FieldStorage
 from pylons import c, g, request, response
 from nose.tools import assert_raises, assert_equals, with_setup
 import mock
+from mock import patch
 
 from ming.orm import session, ThreadLocalORMSession
 from webob import Request, Response, exc
@@ -289,3 +290,23 @@ def test_post_url_paginated():
             url += '&page=%s' % page
         url += '#' + _p.slug
         assert _p.url_paginated() == url, _p.url_paginated()
+
+
+@with_setup(setUp, tearDown)
+def test_post_notify():
+    d = M.Discussion(shortname='test', name='test')
+    d.monitoring_email = 'darthvader@deathstar.org'
+    t = M.Thread.new(discussion_id=d._id, subject='Test Thread')
+    with patch('allura.model.notification.Notification.send_simple') as send:
+        t.post('This is a post')
+        send.assert_called_with(d.monitoring_email)
+
+    c.app.config.project.notifications_disabled = True
+    with patch('allura.model.notification.Notification.send_simple') as send:
+        t.post('Another post')
+        try:
+            send.assert_called_with(d.monitoring_email)
+        except AssertionError:
+            pass  # method not called as expected
+        else:
+            assert False, 'send_simple must not be called'