[2/2] allura git commit: [#8192] if post is already destined for moderation queue and spammy, go straight to spam status
[#8192] if post is already destined for moderation queue and spammy, go straight to spam status Project: http://git-wip-us.apache.org/repos/asf/allura/repo Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/6742f0f1 Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/6742f0f1 Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/6742f0f1 Branch: refs/heads/master Commit: 6742f0f15fa4417c347952a9dc3358e070f73b49 Parents: 407559b Author: Dave BrondsemaAuthored: Wed Mar 7 12:09:12 2018 -0500 Committer: Kenton Taylor Committed: Wed Mar 7 14:38:34 2018 -0500 -- Allura/allura/model/discuss.py | 15 --- .../forgediscussion/tests/functional/test_forum.py | 7 --- .../forgetracker/tests/functional/test_root.py | 15 ++- 3 files changed, 30 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/allura/blob/6742f0f1/Allura/allura/model/discuss.py -- diff --git a/Allura/allura/model/discuss.py b/Allura/allura/model/discuss.py index 32cf68e..61100e2 100644 --- a/Allura/allura/model/discuss.py +++ b/Allura/allura/model/discuss.py @@ -326,11 +326,19 @@ class Thread(Artifact, ActivityObject): if message_id is not None: kwargs['_id'] = message_id post = self.post_class()(**kwargs) -if ignore_security or not self.is_spam(post) and has_access(self, 'unmoderated_post')(): + +# unmoderated post -> autoapprove +# unmoderated post but is spammy -> don't approve it, it goes into moderation +# moderated post -> moderation +# moderated post but is spammy -> mark as spam +spammy = self.is_spam(post) +if ignore_security or (not spammy and has_access(self, 'unmoderated_post')): log.info('Auto-approving message from %s', c.user.username) file_info = kw.get('file_info', None) post.approve(file_info, notify=notify, notification_text=notification_text) +elif not has_access(self, 'unmoderated_post') and spammy: +post.spam(submit_spam_feedback=False) # no feedback since we're marking as spam automatically not manually else: self.notify_moderators(post) return post @@ -786,9 +794,10 @@ class Post(Message, VersionedArtifact, ActivityObject): else: # Send if no extra checks required n.send_simple(artifact.monitoring_email) -def spam(self): +def spam(self, submit_spam_feedback=True): self.status = 'spam' -g.spam_checker.submit_spam(self.text, artifact=self, user=self.author()) +if submit_spam_feedback: +g.spam_checker.submit_spam(self.text, artifact=self, user=self.author()) session(self).flush(self) self.thread.update_stats() http://git-wip-us.apache.org/repos/asf/allura/blob/6742f0f1/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py -- diff --git a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py index bf54413..929fc7f 100644 --- a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py +++ b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py @@ -491,17 +491,18 @@ class TestForum(TestController): opt_auth = select.find(text='*authenticated').parent opt_admin = select.find(text='Admin').parent r = self.app.post('/admin/discussion/update', params={ -'card-0.value': opt_admin['value'], 'card-0.id': 'admin', +'card-0.value': opt_admin['value'], 'card-4.id': 'read', 'card-4.value': opt_anon['value'], +'card-3.id': 'post', 'card-3.value': opt_auth['value'], 'card-3.new': opt_anon['value'], -'card-3.id': 'post'}) +}) @mock.patch('allura.model.discuss.g.spam_checker') def test_anonymous_post(self, spam_checker): -spam_checker.check.return_value = True +spam_checker.check.return_value = False self._set_anon_allowed() r = self.app.get('/discussion/create_topic/') f = r.html.find('form', {'action': '/p/test/discussion/save_new_topic'}) http://git-wip-us.apache.org/repos/asf/allura/blob/6742f0f1/ForgeTracker/forgetracker/tests/functional/test_root.py -- diff --git a/ForgeTracker/forgetracker/tests/functional/test_root.py b/ForgeTracker/forgetracker/tests/functional/test_root.py index 40afa8c..cb15819 100644 ---
[2/2] allura git commit: [#8192] if post is already destined for moderation queue and spammy, go straight to spam status
[#8192] if post is already destined for moderation queue and spammy, go straight to spam status Project: http://git-wip-us.apache.org/repos/asf/allura/repo Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/02dedc9f Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/02dedc9f Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/02dedc9f Branch: refs/heads/db/8192 Commit: 02dedc9f21b641d0113503f6b15b23d74ac4e292 Parents: b45d8f9 Author: Dave BrondsemaAuthored: Wed Mar 7 12:09:12 2018 -0500 Committer: Dave Brondsema Committed: Wed Mar 7 13:12:09 2018 -0500 -- Allura/allura/model/discuss.py | 15 --- .../forgediscussion/tests/functional/test_forum.py | 7 --- .../forgetracker/tests/functional/test_root.py | 15 ++- 3 files changed, 30 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/allura/blob/02dedc9f/Allura/allura/model/discuss.py -- diff --git a/Allura/allura/model/discuss.py b/Allura/allura/model/discuss.py index 32cf68e..61100e2 100644 --- a/Allura/allura/model/discuss.py +++ b/Allura/allura/model/discuss.py @@ -326,11 +326,19 @@ class Thread(Artifact, ActivityObject): if message_id is not None: kwargs['_id'] = message_id post = self.post_class()(**kwargs) -if ignore_security or not self.is_spam(post) and has_access(self, 'unmoderated_post')(): + +# unmoderated post -> autoapprove +# unmoderated post but is spammy -> don't approve it, it goes into moderation +# moderated post -> moderation +# moderated post but is spammy -> mark as spam +spammy = self.is_spam(post) +if ignore_security or (not spammy and has_access(self, 'unmoderated_post')): log.info('Auto-approving message from %s', c.user.username) file_info = kw.get('file_info', None) post.approve(file_info, notify=notify, notification_text=notification_text) +elif not has_access(self, 'unmoderated_post') and spammy: +post.spam(submit_spam_feedback=False) # no feedback since we're marking as spam automatically not manually else: self.notify_moderators(post) return post @@ -786,9 +794,10 @@ class Post(Message, VersionedArtifact, ActivityObject): else: # Send if no extra checks required n.send_simple(artifact.monitoring_email) -def spam(self): +def spam(self, submit_spam_feedback=True): self.status = 'spam' -g.spam_checker.submit_spam(self.text, artifact=self, user=self.author()) +if submit_spam_feedback: +g.spam_checker.submit_spam(self.text, artifact=self, user=self.author()) session(self).flush(self) self.thread.update_stats() http://git-wip-us.apache.org/repos/asf/allura/blob/02dedc9f/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py -- diff --git a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py index bf54413..929fc7f 100644 --- a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py +++ b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py @@ -491,17 +491,18 @@ class TestForum(TestController): opt_auth = select.find(text='*authenticated').parent opt_admin = select.find(text='Admin').parent r = self.app.post('/admin/discussion/update', params={ -'card-0.value': opt_admin['value'], 'card-0.id': 'admin', +'card-0.value': opt_admin['value'], 'card-4.id': 'read', 'card-4.value': opt_anon['value'], +'card-3.id': 'post', 'card-3.value': opt_auth['value'], 'card-3.new': opt_anon['value'], -'card-3.id': 'post'}) +}) @mock.patch('allura.model.discuss.g.spam_checker') def test_anonymous_post(self, spam_checker): -spam_checker.check.return_value = True +spam_checker.check.return_value = False self._set_anon_allowed() r = self.app.get('/discussion/create_topic/') f = r.html.find('form', {'action': '/p/test/discussion/save_new_topic'}) http://git-wip-us.apache.org/repos/asf/allura/blob/02dedc9f/ForgeTracker/forgetracker/tests/functional/test_root.py -- diff --git a/ForgeTracker/forgetracker/tests/functional/test_root.py b/ForgeTracker/forgetracker/tests/functional/test_root.py index 40afa8c..cb15819 100644 ---