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 2016/01/27 18:17:38 UTC

[01/10] allura git commit: [#8020] ticket:874 added filter to discussion moderation; added test for filtering

Repository: allura
Updated Branches:
  refs/heads/master 2dd2ff081 -> 3ccbb5d4c


[#8020] ticket:874 added filter to discussion moderation; added test for filtering


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

Branch: refs/heads/master
Commit: 070769498ae13e9563676462dafc5b0b7ae91483
Parents: 2dd2ff0
Author: DeV1doR <de...@ukr.net>
Authored: Wed Dec 9 20:27:29 2015 +0200
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed Jan 27 12:03:17 2016 -0500

----------------------------------------------------------------------
 Allura/allura/controllers/discuss.py            |  7 +++++-
 Allura/allura/lib/widgets/discuss.py            |  2 ++
 .../allura/templates/discussion/moderate.html   |  2 +-
 .../tests/functional/test_forum.py              | 25 ++++++++++++++++++++
 4 files changed, 34 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/07076949/Allura/allura/controllers/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/discuss.py b/Allura/allura/controllers/discuss.py
index c22e772..9812a98 100644
--- a/Allura/allura/controllers/discuss.py
+++ b/Allura/allura/controllers/discuss.py
@@ -35,6 +35,7 @@ from allura.lib.decorators import require_post
 from allura.lib.security import require_access
 
 from allura.lib.widgets import discuss as DW
+from allura.model.auth import User
 from .attachments import AttachmentsController, AttachmentController
 from .feed import FeedArgs, FeedController
 
@@ -427,6 +428,7 @@ class ModerationController(BaseController):
         page = kw.pop('page', 0)
         limit = kw.pop('limit', 50)
         status = kw.pop('status', 'pending')
+        username = kw.pop('username', None)
         flag = kw.pop('flag', None)
         c.post_filter = WidgetConfig.post_filter
         c.moderate_posts = WidgetConfig.moderate_posts
@@ -437,6 +439,9 @@ class ModerationController(BaseController):
             query['status'] = status
         if flag:
             query['flags'] = {'$gte': int(flag)}
+        if username:
+            filtered_user = User.query.get(username=username)
+            query['author_id'] = getattr(filtered_user, '_id', None)
         q = self.PostModel.query.find(query)
         count = q.count()
         limit, page, start = g.handle_paging(limit, page or 0, default=50)
@@ -446,7 +451,7 @@ class ModerationController(BaseController):
         pages = (count // limit) + 1
         return dict(discussion=self.discussion,
                     posts=q, page=page, limit=limit,
-                    status=status, flag=flag,
+                    status=status, flag=flag, username=username,
                     pgnum=pgnum, pages=pages)
 
     @h.vardec

http://git-wip-us.apache.org/repos/asf/allura/blob/07076949/Allura/allura/lib/widgets/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/discuss.py b/Allura/allura/lib/widgets/discuss.py
index e5ab85c..9d0955f 100644
--- a/Allura/allura/lib/widgets/discuss.py
+++ b/Allura/allura/lib/widgets/discuss.py
@@ -123,6 +123,8 @@ class PostFilter(ff.ForgeForm):
                         label='Show posts with at least "n" flags',
                         css_class='text',
                         if_missing=0),
+            ew.InputField(name='username',
+                          label='Show post filtered by (username)'),
             ew.SubmitButton(label='Filter Posts')
         ])
     ]

http://git-wip-us.apache.org/repos/asf/allura/blob/07076949/Allura/allura/templates/discussion/moderate.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/discussion/moderate.html b/Allura/allura/templates/discussion/moderate.html
index b5f2e22..81f0c18 100644
--- a/Allura/allura/templates/discussion/moderate.html
+++ b/Allura/allura/templates/discussion/moderate.html
@@ -34,6 +34,6 @@ Moderation Queue
   <a href="?status={{status}}&amp;flag={{flag}}&amp;page={{page-limit}}">Previous Page</a>
   <a href="?status={{status}}&amp;flag={{flag}}&amp;page={{page+limit}}">Next Page</a>
 </div>
-{{c.post_filter.display(action=discussion.url()+'moderate', value=dict(status=status, flag=flag))}}
+{{c.post_filter.display(action=discussion.url()+'moderate', value=dict(status=status, flag=flag, username=username))}}
 {{c.moderate_posts.display(value=dict(posts=posts), action=discussion.url()+'moderate/save_moderation')}}
 {% endblock %}

http://git-wip-us.apache.org/repos/asf/allura/blob/07076949/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 5c6a180..0fafe71 100644
--- a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
+++ b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
@@ -408,6 +408,31 @@ class TestForum(TestController):
             'delete': 'Delete Marked'})
         _check()
 
+    def test_user_filter(self):
+        username = 'test_username1'
+        r = self.app.get(
+            '/discussion/testforum/moderate?username=%s' % username)
+        input_field = r.html.fieldset.find('input', {'value': username})
+        assert input_field is not None
+
+        username = 341
+        r = self.app.get(
+            '/discussion/testforum/moderate?username=%s' % username)
+        input_field = r.html.fieldset.find('input', {'value': username})
+        assert input_field is not None
+
+        username = 123.43523
+        r = self.app.get(
+            '/discussion/testforum/moderate?username=%s' % username)
+        input_field = r.html.fieldset.find('input', {'value': username})
+        assert input_field is not None
+
+        username = None
+        r = self.app.get(
+            '/discussion/testforum/moderate?username=%s' % username)
+        input_field = r.html.fieldset.find('input', {'value': username})
+        assert input_field is None
+
     def test_posting(self):
         r = self.app.get('/discussion/create_topic/')
         f = r.html.find('form', {'action': '/p/test/discussion/save_new_topic'})


[03/10] allura git commit: [#8020] ticket:875 updated widget

Posted by br...@apache.org.
[#8020] ticket:875 updated widget


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

Branch: refs/heads/master
Commit: f7637031a7ed3ea491386e057a079dd8cda3e75c
Parents: 63740ee
Author: DeV1doR <de...@ukr.net>
Authored: Fri Dec 11 15:14:57 2015 +0200
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed Jan 27 12:03:18 2016 -0500

----------------------------------------------------------------------
 Allura/allura/lib/widgets/discuss.py             | 1 +
 Allura/allura/templates/widgets/post_widget.html | 4 +++-
 2 files changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/f7637031/Allura/allura/lib/widgets/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/discuss.py b/Allura/allura/lib/widgets/discuss.py
index 6503d5b..c56e2cd 100644
--- a/Allura/allura/lib/widgets/discuss.py
+++ b/Allura/allura/lib/widgets/discuss.py
@@ -346,6 +346,7 @@ class Post(HierWidget):
                             else if (mod == 'Undo'){
                                 spam_block_display($(post), 'block');
                                 $(post).find('.spam-present').hide();
+                                $(post).find('.options a').eq(0).hide();
                             }
                         }
                     });

http://git-wip-us.apache.org/repos/asf/allura/blob/f7637031/Allura/allura/templates/widgets/post_widget.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/widgets/post_widget.html b/Allura/allura/templates/widgets/post_widget.html
index a8aa822..2695c2b 100644
--- a/Allura/allura/templates/widgets/post_widget.html
+++ b/Allura/allura/templates/widgets/post_widget.html
@@ -46,13 +46,15 @@
       <div class="grid-14 post-content" style="width: {{indent == 0 and 525 or (indent <= 40 and 515-indent*10 or 65)}}px">
         <div class="spam-present">
           <span class="spam-text">Comment has been marked as spam.&nbsp;</span>
+          {% if h.has_access(value, 'moderate')() %}
           <form method="POST" action="{{value.url()+'moderate'}}">
             <input type="hidden" name="undo" value="True"/>
             <a href="" class="moderate_post little_link"><span>Undo</span></a>
             {{lib.csrf_token()}}
           </form>
+          {% endif %}
           <br>
-          <span class="spam-text">You can see all comments posted by this user&nbsp;</span><a href="/p/test/tickets/_discuss/moderate">here</a>
+          <span class="spam-text">You can see all comments posted by this user&nbsp;</span><a href="/p/test/tickets/_discuss/moderate?username={{value.author().username}}&status=spam">here</a>
         </div>
         <div class="display_post{% if pending and moderator %} moderate{% endif %}">
           {% if pending and not moderator %}


[04/10] allura git commit: [#8020] ticket:875 updated rendering of spam block; changed notification text and redirect here link

Posted by br...@apache.org.
[#8020] ticket:875 updated rendering of spam block; changed notification text and redirect here link


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

Branch: refs/heads/master
Commit: 0778b7adecf9ad558bbe56143670f513e811676e
Parents: bf73398
Author: DeV1doR <de...@ukr.net>
Authored: Mon Dec 21 18:15:56 2015 +0200
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed Jan 27 12:03:18 2016 -0500

----------------------------------------------------------------------
 Allura/allura/lib/widgets/discuss.py            | 34 +++++++-------------
 Allura/allura/nf/allura/css/site_style.css      |  1 +
 .../allura/templates/widgets/post_widget.html   | 26 +++++++--------
 3 files changed, 25 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/0778b7ad/Allura/allura/lib/widgets/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/discuss.py b/Allura/allura/lib/widgets/discuss.py
index 4d83070..d343969 100644
--- a/Allura/allura/lib/widgets/discuss.py
+++ b/Allura/allura/lib/widgets/discuss.py
@@ -340,37 +340,25 @@ class Post(HierWidget):
                                 $('div.moderate', post).removeClass('moderate');
                             }
                             else if (mod == 'Spam'){
-                                spam_block_display($(post), 'none');
+                                spam_block_display($(post), 'show_spam');
                             }
                             else if (mod == 'Undo'){
-                                spam_block_display($(post), 'block');
+                                spam_block_display($(post), 'hide_spam');
                             }
                         }
                     });
                 });
 
                 function spam_block_display($post, display_type) {
-                    var post_block = $post.find('.display_post');
-                    post_block.css('display', display_type);
-
-                    var attach_block = $post.find('.add_attachment_form').next();
-                    if (attach_block.attr('class') == undefined) {
-                        attach_block.css('display', display_type);
-                    }
-
-                    $.each($post.find('.options').children(), function() {
-                        $(this).css('display', display_type);
-                        if (
-                            $(this).hasClass('reply_post') &&
-                            $post.find('input[name="prev_status"]').attr('value') == 'pending'
-                        ) {
-                            $(this).hide();
-                        }
-                    });
-                    if (display_type == 'none') {
-                        $post.find('.spam-present').show();
-                    } else {
-                        $post.find('.spam-present').hide();
+                    var spam_block = $post.find('.info.grid-15.spam-present');
+                    var row = $post.find('.row').eq(0);
+
+                    if (display_type == 'show_spam') {
+                        spam_block.show();
+                        row.hide();
+                    } else if (display_type == 'hide_spam') {
+                        spam_block.hide();
+                        row.show();
                     }
                 }
 

http://git-wip-us.apache.org/repos/asf/allura/blob/0778b7ad/Allura/allura/nf/allura/css/site_style.css
----------------------------------------------------------------------
diff --git a/Allura/allura/nf/allura/css/site_style.css b/Allura/allura/nf/allura/css/site_style.css
index 5dd347d..885d948 100644
--- a/Allura/allura/nf/allura/css/site_style.css
+++ b/Allura/allura/nf/allura/css/site_style.css
@@ -3430,6 +3430,7 @@ fieldset.preferences legend {
 }
 .spam-present {
   display: none;
+  margin-left: 75px;
 }
 .spam-text {
   float: left;

http://git-wip-us.apache.org/repos/asf/allura/blob/0778b7ad/Allura/allura/templates/widgets/post_widget.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/widgets/post_widget.html b/Allura/allura/templates/widgets/post_widget.html
index 6b8622d..4d388ee 100644
--- a/Allura/allura/templates/widgets/post_widget.html
+++ b/Allura/allura/templates/widgets/post_widget.html
@@ -29,6 +29,19 @@
 
 <div>
   <div id="{{value.slug}}" class="discussion-post">
+    {% if h.has_access(value, 'moderate')() %}
+    <div class="info grid-15 spam-present">
+      <span class="spam-text">Comment has been marked as spam.&nbsp;</span>
+      <form method="POST" action="{{value.url()+'moderate'}}">
+        <input type="hidden" name="undo" value="True"/>
+        <input type="hidden" name="prev_status" value="{{value.status}}">
+        <a href="" class="moderate_post little_link"><span>Undo</span></a>
+        {{lib.csrf_token()}}
+      </form>
+      <br>
+      <span class="spam-text">You can see all pending comments posted by this user&nbsp;</span><a href="/p/test/tickets/_discuss/moderate?username={{value.author().username}}&status=pending">here</a>
+    </div>
+    {% endif %}
     <div class="row">
       <div class="grid-2 tcenter gravatar">
        <p class="gravatar">
@@ -44,19 +57,6 @@
       {% set pending = value.status == 'pending' %}
       {% set moderator = h.has_access(value, 'moderator')() %}
       <div class="grid-14 post-content" style="width: {{indent == 0 and 525 or (indent <= 40 and 515-indent*10 or 65)}}px">
-        <div class="spam-present">
-          <span class="spam-text">Comment has been marked as spam.&nbsp;</span>
-          {% if h.has_access(value, 'moderate')() %}
-          <form method="POST" action="{{value.url()+'moderate'}}">
-            <input type="hidden" name="undo" value="True"/>
-            <input type="hidden" name="prev_status" value="{{value.status}}">
-            <a href="" class="moderate_post little_link"><span>Undo</span></a>
-            {{lib.csrf_token()}}
-          </form>
-          {% endif %}
-          <br>
-          <span class="spam-text">You can see all comments posted by this user&nbsp;</span><a href="/p/test/tickets/_discuss/moderate?username={{value.author().username}}&status=spam">here</a>
-        </div>
         <div class="display_post{% if pending and moderator %} moderate{% endif %}">
           {% if pending and not moderator %}
             <b>Post awaiting moderation.</b>


[09/10] allura git commit: [#8020] ticket:866 Add Thread.update_stats() to functions which change Post status

Posted by br...@apache.org.
[#8020] ticket:866 Add Thread.update_stats() to functions which change Post status


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

Branch: refs/heads/master
Commit: 31396ee6b96e18e5c4f0bc918d561b64f7ea32b9
Parents: 2121b5c
Author: Denis Kotov <de...@gmail.com>
Authored: Wed Jan 20 18:03:07 2016 +0200
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed Jan 27 12:08:16 2016 -0500

----------------------------------------------------------------------
 Allura/allura/controllers/discuss.py         |  4 +--
 Allura/allura/model/discuss.py               | 16 +++++++++---
 Allura/allura/tests/model/test_discussion.py | 30 ++++++++++++++++++-----
 3 files changed, 37 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/31396ee6/Allura/allura/controllers/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/discuss.py b/Allura/allura/controllers/discuss.py
index e28a780..9cb5f37 100644
--- a/Allura/allura/controllers/discuss.py
+++ b/Allura/allura/controllers/discuss.py
@@ -356,14 +356,12 @@ class PostController(BaseController):
             self.post.spam()
         elif kw.pop('undo', None):
             prev_status = kw.pop('prev_status', None)
-            if prev_status:
-                self.post.status = prev_status
+            self.post.undo(prev_status)
         elif kw.pop('approve', None):
             if self.post.status != 'ok':
                 self.post.approve()
                 g.spam_checker.submit_ham(self.post.text, artifact=self.post, user=self.post.author())
                 self.post.thread.post_to_feed(self.post)
-        self.thread.update_stats()
         return dict(result='success')
 
     @h.vardec

http://git-wip-us.apache.org/repos/asf/allura/blob/31396ee6/Allura/allura/model/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/discuss.py b/Allura/allura/model/discuss.py
index df753e8..e3e6527 100644
--- a/Allura/allura/model/discuss.py
+++ b/Allura/allura/model/discuss.py
@@ -265,7 +265,8 @@ class Thread(Artifact, ActivityObject):
         """Helper function to avoid code duplication."""
         p = self.post(**kw)
         p.commit(update_stats=False)
-        self.num_replies += 1
+        session(self).flush(self)
+        self.update_stats()
         if not self.first_post:
             self.first_post_id = p._id
         self.post_to_feed(p)
@@ -343,7 +344,7 @@ class Thread(Artifact, ActivityObject):
 
     def update_stats(self):
         self.num_replies = self.post_class().query.find(
-            dict(thread_id=self._id, status='ok', deleted=False)).count() - 1
+            dict(thread_id=self._id, status='ok', deleted=False)).count()
 
     @property
     def last_post(self):
@@ -701,7 +702,7 @@ class Post(Message, VersionedArtifact, ActivityObject):
     def delete(self):
         self.deleted = True
         session(self).flush(self)
-        self.thread.num_replies = max(0, self.thread.num_replies - 1)
+        self.thread.update_stats()
 
     def approve(self, file_info=None, notify=True, notification_text=None):
         if self.status == 'ok':
@@ -769,8 +770,15 @@ class Post(Message, VersionedArtifact, ActivityObject):
 
     def spam(self):
         self.status = 'spam'
-        self.thread.num_replies = max(0, self.thread.num_replies - 1)
         g.spam_checker.submit_spam(self.text, artifact=self, user=self.author())
+        session(self).flush(self)
+        self.thread.update_stats()
+
+    def undo(self, prev_status):
+        if prev_status in ('ok', 'pending'):
+            self.status = prev_status
+            session(self).flush(self)
+            self.thread.update_stats()
 
 
 class DiscussionAttachment(BaseAttachment):

http://git-wip-us.apache.org/repos/asf/allura/blob/31396ee6/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 c94f2a6..7b15c1d 100644
--- a/Allura/allura/tests/model/test_discussion.py
+++ b/Allura/allura/tests/model/test_discussion.py
@@ -114,7 +114,8 @@ def test_thread_methods():
     assert '_id' in jsn
     assert_equals(len(jsn['posts']), 3)
     (p.approve() for p in (p0, p1))
-    assert t.num_replies == 2
+    ThreadLocalORMSession.flush_all()
+    assert t.num_replies == 3
     t.spam()
     assert t.num_replies == 0
     ThreadLocalORMSession.flush_all()
@@ -165,13 +166,14 @@ def test_post_methods():
     assert jsn["thread_id"] == t._id
 
     (p.approve() for p in (p, p2))
-    assert t.num_replies == 1
-    p2.spam()
-    assert t.num_replies == 0
+    ThreadLocalORMSession.flush_all()
+    assert t.num_replies == 2
     p.spam()
-    assert t.num_replies == 0
+    assert t.num_replies == 1
+    p.undo('ok')
+    assert t.num_replies == 2
     p.delete()
-    assert t.num_replies == 0
+    assert t.num_replies == 1
 
 
 @with_setup(setUp, tearDown)
@@ -325,6 +327,21 @@ def test_post_delete():
 
 
 @with_setup(setUp, tearDown)
+def test_post_undo():
+    d = M.Discussion(shortname='test', name='test')
+    t = M.Thread.new(discussion_id=d._id, subject='Test Thread')
+    p = t.post('This is a post')
+    t.post('This is a post2')
+    t.post('This is a post3')
+    ThreadLocalORMSession.flush_all()
+    assert t.num_replies == 3
+    p.spam()
+    assert t.num_replies == 2
+    p.undo('ok')
+    assert t.num_replies == 3
+
+
+@with_setup(setUp, tearDown)
 def test_post_permission_check():
     d = M.Discussion(shortname='test', name='test')
     t = M.Thread.new(discussion_id=d._id, subject='Test Thread')
@@ -519,6 +536,7 @@ def test_post_count():
 def test_spam_num_replies(spam_checker):
     d = M.Discussion(shortname='test', name='test')
     t = M.Thread(discussion_id=d._id, subject='Test Thread', num_replies=2)
+    M.Post(discussion_id=d._id, thread_id=t._id, status='ok')
     p1 = M.Post(discussion_id=d._id, thread_id=t._id, status='spam')
     p1.spam()
     assert_equal(t.num_replies, 1)


[02/10] allura git commit: [#8020] ticket:875 updated jquery for render; updated logic with undo; updated test

Posted by br...@apache.org.
[#8020] ticket:875 updated jquery for render; updated logic with undo; updated test


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

Branch: refs/heads/master
Commit: bf73398657928320e4e6dad1e40f0136a8162223
Parents: f763703
Author: DeV1doR <de...@ukr.net>
Authored: Sat Dec 12 17:18:08 2015 +0200
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed Jan 27 12:03:18 2016 -0500

----------------------------------------------------------------------
 Allura/allura/controllers/discuss.py            |  4 +++-
 Allura/allura/lib/widgets/discuss.py            | 24 ++++++++++++++++----
 .../allura/templates/widgets/post_widget.html   |  1 +
 Allura/allura/tests/functional/test_discuss.py  |  9 +++++++-
 4 files changed, 31 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/bf733986/Allura/allura/controllers/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/discuss.py b/Allura/allura/controllers/discuss.py
index 36cc494..92b1169 100644
--- a/Allura/allura/controllers/discuss.py
+++ b/Allura/allura/controllers/discuss.py
@@ -356,7 +356,9 @@ class PostController(BaseController):
         elif kw.pop('spam', None):
             self.post.spam()
         elif kw.pop('undo', None):
-            self.post.status = 'pending'
+            prev_status = kw.pop('prev_status', None)
+            if prev_status:
+                self.post.status = prev_status
         elif kw.pop('approve', None):
             if self.post.status != 'ok':
                 self.post.approve()

http://git-wip-us.apache.org/repos/asf/allura/blob/bf733986/Allura/allura/lib/widgets/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/discuss.py b/Allura/allura/lib/widgets/discuss.py
index c56e2cd..4d83070 100644
--- a/Allura/allura/lib/widgets/discuss.py
+++ b/Allura/allura/lib/widgets/discuss.py
@@ -341,23 +341,37 @@ class Post(HierWidget):
                             }
                             else if (mod == 'Spam'){
                                 spam_block_display($(post), 'none');
-                                $(post).find('.spam-present').show();
                             }
                             else if (mod == 'Undo'){
                                 spam_block_display($(post), 'block');
-                                $(post).find('.spam-present').hide();
-                                $(post).find('.options a').eq(0).hide();
                             }
                         }
                     });
                 });
 
                 function spam_block_display($post, display_type) {
-                    $post.find('.display_post').css(
-                        'display', display_type);
+                    var post_block = $post.find('.display_post');
+                    post_block.css('display', display_type);
+
+                    var attach_block = $post.find('.add_attachment_form').next();
+                    if (attach_block.attr('class') == undefined) {
+                        attach_block.css('display', display_type);
+                    }
+
                     $.each($post.find('.options').children(), function() {
                         $(this).css('display', display_type);
+                        if (
+                            $(this).hasClass('reply_post') &&
+                            $post.find('input[name="prev_status"]').attr('value') == 'pending'
+                        ) {
+                            $(this).hide();
+                        }
                     });
+                    if (display_type == 'none') {
+                        $post.find('.spam-present').show();
+                    } else {
+                        $post.find('.spam-present').hide();
+                    }
                 }
 
                 function get_cm($elem) { return $('.CodeMirror', $elem)[0].CodeMirror; }

http://git-wip-us.apache.org/repos/asf/allura/blob/bf733986/Allura/allura/templates/widgets/post_widget.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/widgets/post_widget.html b/Allura/allura/templates/widgets/post_widget.html
index 2695c2b..6b8622d 100644
--- a/Allura/allura/templates/widgets/post_widget.html
+++ b/Allura/allura/templates/widgets/post_widget.html
@@ -49,6 +49,7 @@
           {% if h.has_access(value, 'moderate')() %}
           <form method="POST" action="{{value.url()+'moderate'}}">
             <input type="hidden" name="undo" value="True"/>
+            <input type="hidden" name="prev_status" value="{{value.status}}">
             <a href="" class="moderate_post little_link"><span>Undo</span></a>
             {{lib.csrf_token()}}
           </form>

http://git-wip-us.apache.org/repos/asf/allura/blob/bf733986/Allura/allura/tests/functional/test_discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/functional/test_discuss.py b/Allura/allura/tests/functional/test_discuss.py
index 47218c8..719e57a 100644
--- a/Allura/allura/tests/functional/test_discuss.py
+++ b/Allura/allura/tests/functional/test_discuss.py
@@ -212,10 +212,17 @@ class TestDiscuss(TestDiscussBase):
         r = self._make_post('Test post')
         post_link = str(
             r.html.find('div', {'class': 'edit_post_form reply'}).find('form')['action'])
-        self.app.post(post_link + 'moderate', params=dict(undo='undo'))
+
+        self.app.post(post_link + 'moderate', params=dict(
+            undo='undo', prev_status='pending'))
         post = M.Post.query.find().first()
         assert post.status == 'pending'
 
+        self.app.post(post_link + 'moderate', params=dict(
+            undo='undo', prev_status='ok'))
+        post = M.Post.query.find().first()
+        assert post.status == 'ok'
+
     @patch.object(M.Thread, 'is_spam')
     def test_feed_does_not_include_comments_held_for_moderation(self, is_spam):
         is_spam.return_value = True


[06/10] allura git commit: [#8020] remove dead 'flag' code (long long ago non-moderators could help flag things as spam). This is separate from the moderator's flag as spam option, and from thread-level flags (e.g. sticky)

Posted by br...@apache.org.
[#8020] remove dead 'flag' code (long long ago non-moderators could help flag things as spam).  This is separate from the moderator's flag as spam option, and from thread-level flags (e.g. sticky)


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

Branch: refs/heads/master
Commit: 2121b5cbbc632308d41578df4370f4df6bf3e8fb
Parents: 8bdaa38
Author: Dave Brondsema <da...@brondsema.net>
Authored: Wed Jan 6 13:28:58 2016 -0500
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed Jan 27 12:03:18 2016 -0500

----------------------------------------------------------------------
 Allura/allura/controllers/discuss.py            | 12 ----------
 Allura/allura/lib/widgets/discuss.py            | 15 ------------
 Allura/allura/model/discuss.py                  |  3 ---
 Allura/allura/templates/widgets/flag_post.html  | 24 --------------------
 .../templates/widgets/moderate_posts.html       |  2 --
 Allura/docs/api-rest/examples/discussion.json   |  2 --
 Allura/docs/api-rest/schemas/discussion.json    |  4 ----
 .../forgediscussion/controllers/forum.py        |  1 -
 8 files changed, 63 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/2121b5cb/Allura/allura/controllers/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/discuss.py b/Allura/allura/controllers/discuss.py
index 92b1169..e28a780 100644
--- a/Allura/allura/controllers/discuss.py
+++ b/Allura/allura/controllers/discuss.py
@@ -62,7 +62,6 @@ class WidgetConfig(object):
     edit_post = DW.EditPost()
     moderate_thread = DW.ModerateThread()
     moderate_post = DW.ModeratePost()
-    flag_post = DW.FlagPost()
     post_filter = DW.PostFilter()
     moderate_posts = DW.ModeratePosts()
     # Other widgets
@@ -370,17 +369,6 @@ class PostController(BaseController):
     @h.vardec
     @expose()
     @require_post()
-    @validate(pass_validator, error_handler=error_handler)
-    def flag(self, **kw):
-        self.W.flag_post.to_python(kw, None)
-        if c.user._id not in self.post.flagged_by:
-            self.post.flagged_by.append(c.user._id)
-            self.post.flags += 1
-        redirect(request.referer)
-
-    @h.vardec
-    @expose()
-    @require_post()
     def attach(self, file_info=None):
         require_access(self.post, 'moderate')
         self.post.add_multiple_attachments(file_info)

http://git-wip-us.apache.org/repos/asf/allura/blob/2121b5cb/Allura/allura/lib/widgets/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/discuss.py b/Allura/allura/lib/widgets/discuss.py
index d343969..0e24d5b 100644
--- a/Allura/allura/lib/widgets/discuss.py
+++ b/Allura/allura/lib/widgets/discuss.py
@@ -54,13 +54,6 @@ class ModeratePost(ew.SimpleForm):
         submit_text=None)
 
 
-class FlagPost(ew.SimpleForm):
-    template = 'jinja:allura:templates/widgets/flag_post.html'
-    defaults = dict(
-        ew.SimpleForm.defaults,
-        submit_text=None)
-
-
 class AttachPost(ff.ForgeForm):
     defaults = dict(
         ff.ForgeForm.defaults,
@@ -119,10 +112,6 @@ class PostFilter(ff.ForgeForm):
                                   label='Pending moderation'),
                         ew.Option(py_value='ok', label='Ok')],
                     if_missing='pending'),
-            ew.IntField(name='flag',
-                        label='Show posts with at least "n" flags',
-                        css_class='text',
-                        if_missing=0),
             ew.InputField(name='username',
                           label='Show post filtered by username'),
             ew.SubmitButton(label='Filter Posts')
@@ -317,10 +306,6 @@ class Post(HierWidget):
             $('div.discussion-post').each(function () {
                 var post = this;
                 $('.submit', post).button();
-                $('.flag_post', post).click(function (evt) {
-                    evt.preventDefault();
-                    this.parentNode.submit();
-                });
                 $('.moderate_post', post).click(function(e){
                     e.preventDefault();
                     var mod = $(this).text();

http://git-wip-us.apache.org/repos/asf/allura/blob/2121b5cb/Allura/allura/model/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/discuss.py b/Allura/allura/model/discuss.py
index 291f554..df753e8 100644
--- a/Allura/allura/model/discuss.py
+++ b/Allura/allura/model/discuss.py
@@ -484,8 +484,6 @@ class Post(Message, VersionedArtifact, ActivityObject):
     subject = FieldProperty(schema.Deprecated)
     status = FieldProperty(schema.OneOf('ok', 'pending', 'spam',
                                         if_missing='pending'))
-    flagged_by = FieldProperty([schema.ObjectId])
-    flags = FieldProperty(int, if_missing=0)
     last_edit_date = FieldProperty(datetime, if_missing=None)
     last_edit_by_id = AlluraUserProperty()
     edit_count = FieldProperty(int, if_missing=0)
@@ -506,7 +504,6 @@ class Post(Message, VersionedArtifact, ActivityObject):
             subject=self.subject,
             status=self.status,
             text=self.text,
-            flagged_by=map(str, self.flagged_by),
             timestamp=self.timestamp,
             last_edited=self.last_edit_date,
             author_id=str(author._id),

http://git-wip-us.apache.org/repos/asf/allura/blob/2121b5cb/Allura/allura/templates/widgets/flag_post.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/widgets/flag_post.html b/Allura/allura/templates/widgets/flag_post.html
deleted file mode 100644
index 64a7d6e..0000000
--- a/Allura/allura/templates/widgets/flag_post.html
+++ /dev/null
@@ -1,24 +0,0 @@
-{#-
-       Licensed to the Apache Software Foundation (ASF) under one
-       or more contributor license agreements.  See the NOTICE file
-       distributed with this work for additional information
-       regarding copyright ownership.  The ASF licenses this file
-       to you under the Apache License, Version 2.0 (the
-       "License"); you may not use this file except in compliance
-       with the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing,
-       software distributed under the License is distributed on an
-       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-       KIND, either express or implied.  See the License for the
-       specific language governing permissions and limitations
-       under the License.
--#}
-{% import 'allura:templates/jinja_master/lib.html' as lib with context %}
-<form method="POST" action="{{action}}">
-    <input type="hidden" name="delete" value="True"/>
-    {{ g.icons['flag'].render(show_title=True, extra_css='flag_post') }}
-    {{lib.csrf_token()}}
-</form>

http://git-wip-us.apache.org/repos/asf/allura/blob/2121b5cb/Allura/allura/templates/widgets/moderate_posts.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/widgets/moderate_posts.html b/Allura/allura/templates/widgets/moderate_posts.html
index 7a81e1e..6a73669 100644
--- a/Allura/allura/templates/widgets/moderate_posts.html
+++ b/Allura/allura/templates/widgets/moderate_posts.html
@@ -32,7 +32,6 @@
         <th><a href="#">[x]</a></th>
         <th>Timestamp</th>
         <th>Status</th>
-        <th>Flags?</th>
         <th>Author</th>
         <th>Subject</th>
         <th>Text</th>
@@ -49,7 +48,6 @@
           </td>
           <td>{{h.ago(post.timestamp)}}</td>
           <td>{{post.status}}</td>
-          <td>{{post.flags}}</td>
           {% set author = post.author() %}
           <td>{{author.display_name}} ({{author.username}})</td>
           <td>{{post.thread.subject or '(no subject)'}}</td>

http://git-wip-us.apache.org/repos/asf/allura/blob/2121b5cb/Allura/docs/api-rest/examples/discussion.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/examples/discussion.json b/Allura/docs/api-rest/examples/discussion.json
index 128269b..51fa7fb 100755
--- a/Allura/docs/api-rest/examples/discussion.json
+++ b/Allura/docs/api-rest/examples/discussion.json
@@ -8,7 +8,6 @@
       "shortname": "devs",
       "_id": "55ad23c34d21224d82656add",
       "last_post": {
-        "flagged_by": [],
         "status": "ok",
         "last_edited": "2015-07-20 16:39:53.290000",
         "author": "root",
@@ -29,7 +28,6 @@
       "shortname": "general",
       "_id": "5568f6684d212236d1eaed07",
       "last_post": {
-        "flagged_by": [],
         "status": "ok",
         "last_edited": null,
         "author": "root",

http://git-wip-us.apache.org/repos/asf/allura/blob/2121b5cb/Allura/docs/api-rest/schemas/discussion.json
----------------------------------------------------------------------
diff --git a/Allura/docs/api-rest/schemas/discussion.json b/Allura/docs/api-rest/schemas/discussion.json
index 8f62a2f..5a66073 100755
--- a/Allura/docs/api-rest/schemas/discussion.json
+++ b/Allura/docs/api-rest/schemas/discussion.json
@@ -36,10 +36,6 @@
                         "type": "object", 
                         "id": "last_post", 
                         "properties": {
-                            "flagged_by": {
-                                "type": "array", 
-                                "id": "flagged_by"
-                            }, 
                             "status": {
                                 "type": "string", 
                                 "id": "status"

http://git-wip-us.apache.org/repos/asf/allura/blob/2121b5cb/ForgeDiscussion/forgediscussion/controllers/forum.py
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/controllers/forum.py b/ForgeDiscussion/forgediscussion/controllers/forum.py
index ba1f366..bb0fa33 100644
--- a/ForgeDiscussion/forgediscussion/controllers/forum.py
+++ b/ForgeDiscussion/forgediscussion/controllers/forum.py
@@ -60,7 +60,6 @@ class WidgetConfig(object):
     subscribe_form = SubscribeForm()
     edit_post = DW.EditPost(show_subject=True)
     moderate_thread = FW.ModerateThread()
-    flag_post = DW.FlagPost()
     post_filter = DW.PostFilter()
     moderate_posts = DW.ModeratePosts()
     # Other widgets


[10/10] allura git commit: [#8020] ticket:866 add flush in test

Posted by br...@apache.org.
[#8020] ticket:866 add flush in test


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

Branch: refs/heads/master
Commit: 3ccbb5d4c123a5e0c302bae00bbe0aeebdee3df2
Parents: 31396ee
Author: Denis Kotov <de...@gmail.com>
Authored: Wed Jan 20 21:45:51 2016 +0200
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed Jan 27 12:08:19 2016 -0500

----------------------------------------------------------------------
 Allura/allura/tests/model/test_discussion.py | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/3ccbb5d4/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 7b15c1d..2ff36f4 100644
--- a/Allura/allura/tests/model/test_discussion.py
+++ b/Allura/allura/tests/model/test_discussion.py
@@ -537,6 +537,7 @@ def test_spam_num_replies(spam_checker):
     d = M.Discussion(shortname='test', name='test')
     t = M.Thread(discussion_id=d._id, subject='Test Thread', num_replies=2)
     M.Post(discussion_id=d._id, thread_id=t._id, status='ok')
+    ThreadLocalORMSession.flush_all()
     p1 = M.Post(discussion_id=d._id, thread_id=t._id, status='spam')
     p1.spam()
     assert_equal(t.num_replies, 1)


[05/10] allura git commit: [#8020] ticket:874 added tests for moderation

Posted by br...@apache.org.
[#8020] ticket:874 added tests for moderation


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

Branch: refs/heads/master
Commit: ba44f08fba273e5fcf28d515b31652c818fcc357
Parents: 0707694
Author: DeV1doR <de...@ukr.net>
Authored: Thu Dec 10 19:22:04 2015 +0200
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed Jan 27 12:03:18 2016 -0500

----------------------------------------------------------------------
 Allura/allura/controllers/discuss.py            |  4 +--
 Allura/allura/lib/widgets/discuss.py            |  2 +-
 Allura/allura/tests/functional/test_discuss.py  | 36 ++++++++++++++++++++
 .../tests/functional/test_forum.py              | 12 -------
 4 files changed, 39 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/ba44f08f/Allura/allura/controllers/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/discuss.py b/Allura/allura/controllers/discuss.py
index 9812a98..89d4545 100644
--- a/Allura/allura/controllers/discuss.py
+++ b/Allura/allura/controllers/discuss.py
@@ -440,8 +440,8 @@ class ModerationController(BaseController):
         if flag:
             query['flags'] = {'$gte': int(flag)}
         if username:
-            filtered_user = User.query.get(username=username)
-            query['author_id'] = getattr(filtered_user, '_id', None)
+            filtered_user = User.by_username(username)
+            query['author_id'] = filtered_user._id if filtered_user else None
         q = self.PostModel.query.find(query)
         count = q.count()
         limit, page, start = g.handle_paging(limit, page or 0, default=50)

http://git-wip-us.apache.org/repos/asf/allura/blob/ba44f08f/Allura/allura/lib/widgets/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/discuss.py b/Allura/allura/lib/widgets/discuss.py
index 9d0955f..a8e475d 100644
--- a/Allura/allura/lib/widgets/discuss.py
+++ b/Allura/allura/lib/widgets/discuss.py
@@ -124,7 +124,7 @@ class PostFilter(ff.ForgeForm):
                         css_class='text',
                         if_missing=0),
             ew.InputField(name='username',
-                          label='Show post filtered by (username)'),
+                          label='Show post filtered by username'),
             ew.SubmitButton(label='Filter Posts')
         ])
     ]

http://git-wip-us.apache.org/repos/asf/allura/blob/ba44f08f/Allura/allura/tests/functional/test_discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/functional/test_discuss.py b/Allura/allura/tests/functional/test_discuss.py
index fb8a08b..d70664b 100644
--- a/Allura/allura/tests/functional/test_discuss.py
+++ b/Allura/allura/tests/functional/test_discuss.py
@@ -172,6 +172,42 @@ class TestDiscuss(TestDiscussBase):
         assert M.Post.query.find().count() == 1
         assert M.Post.query.find({'deleted': False}).count() == 0
 
+    def test_user_filter(self):
+        r = self._make_post('Test post')
+        post_link = str(
+            r.html.find('div', {'class': 'edit_post_form reply'}).find('form')['action'])
+        self.app.post(post_link + 'moderate', params=dict(spam='spam'))
+        post = M.Post.query.find().first()
+        post_username = post.author().username
+        moderate_link = '/p/test/wiki/_discuss/moderate'
+
+        # no filter
+        r_no_filtered = self.app.get(
+            moderate_link,
+            params=dict(
+                status=post.status
+            ))
+        assert r_no_filtered.html.tbody.findAll('tr') != []
+
+        # filter with existing user
+        r_filtered = self.app.get(
+            moderate_link,
+            params=dict(
+                username=post_username,
+                status=post.status
+            ))
+        assert r_filtered.html.tbody.findAll('tr') != []
+        assert post_username in r_filtered.html.tbody.findAll('td')[-5].string
+
+        # filter without existing user
+        r_bad_filtered = self.app.get(
+            moderate_link,
+            params=dict(
+                username='bad_filtered_user',
+                status=post.status
+            ))
+        assert r_bad_filtered.html.tbody.findAll('tr') == []
+
     @patch.object(M.Thread, 'is_spam')
     def test_feed_does_not_include_comments_held_for_moderation(self, is_spam):
         is_spam.return_value = True

http://git-wip-us.apache.org/repos/asf/allura/blob/ba44f08f/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 0fafe71..566db32 100644
--- a/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
+++ b/ForgeDiscussion/forgediscussion/tests/functional/test_forum.py
@@ -415,18 +415,6 @@ class TestForum(TestController):
         input_field = r.html.fieldset.find('input', {'value': username})
         assert input_field is not None
 
-        username = 341
-        r = self.app.get(
-            '/discussion/testforum/moderate?username=%s' % username)
-        input_field = r.html.fieldset.find('input', {'value': username})
-        assert input_field is not None
-
-        username = 123.43523
-        r = self.app.get(
-            '/discussion/testforum/moderate?username=%s' % username)
-        input_field = r.html.fieldset.find('input', {'value': username})
-        assert input_field is not None
-
         username = None
         r = self.app.get(
             '/discussion/testforum/moderate?username=%s' % username)


[07/10] allura git commit: [#8020] ticket:875 Replace hardcoded link to moderatation page

Posted by br...@apache.org.
[#8020] ticket:875 Replace hardcoded link to moderatation page


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

Branch: refs/heads/master
Commit: 8bdaa386880a3b991cbb2c360d85843e85ad2c1f
Parents: 0778b7a
Author: Igor Bondarenko <je...@gmail.com>
Authored: Thu Dec 24 14:44:50 2015 +0200
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed Jan 27 12:03:18 2016 -0500

----------------------------------------------------------------------
 Allura/allura/templates/widgets/post_widget.html | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/8bdaa386/Allura/allura/templates/widgets/post_widget.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/widgets/post_widget.html b/Allura/allura/templates/widgets/post_widget.html
index 4d388ee..8c614d4 100644
--- a/Allura/allura/templates/widgets/post_widget.html
+++ b/Allura/allura/templates/widgets/post_widget.html
@@ -39,7 +39,8 @@
         {{lib.csrf_token()}}
       </form>
       <br>
-      <span class="spam-text">You can see all pending comments posted by this user&nbsp;</span><a href="/p/test/tickets/_discuss/moderate?username={{value.author().username}}&status=pending">here</a>
+      <span class="spam-text">You can see all pending comments posted by this user&nbsp;</span>
+      <a href="{{value.thread.discussion.url()}}moderate?username={{value.author().username}}&status=pending">here</a>
     </div>
     {% endif %}
     <div class="row">


[08/10] allura git commit: [#8020] ticket:875 added test for undo; added text when spam clicking occured at ticket post page

Posted by br...@apache.org.
[#8020] ticket:875 added test for undo; added text when spam clicking occured at ticket post page


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

Branch: refs/heads/master
Commit: 63740ee2139eb3ef41d3fd3cbb065b7817c78140
Parents: ba44f08
Author: DeV1doR <de...@ukr.net>
Authored: Fri Dec 11 13:56:05 2015 +0200
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed Jan 27 12:03:18 2016 -0500

----------------------------------------------------------------------
 Allura/allura/controllers/discuss.py             |  2 ++
 Allura/allura/lib/widgets/discuss.py             | 17 +++++++++++++++--
 Allura/allura/nf/allura/css/site_style.css       |  6 ++++++
 Allura/allura/templates/widgets/post_widget.html | 12 +++++++++++-
 Allura/allura/tests/functional/test_discuss.py   |  8 ++++++++
 5 files changed, 42 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/63740ee2/Allura/allura/controllers/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/discuss.py b/Allura/allura/controllers/discuss.py
index 89d4545..36cc494 100644
--- a/Allura/allura/controllers/discuss.py
+++ b/Allura/allura/controllers/discuss.py
@@ -355,6 +355,8 @@ class PostController(BaseController):
             self.post.delete()
         elif kw.pop('spam', None):
             self.post.spam()
+        elif kw.pop('undo', None):
+            self.post.status = 'pending'
         elif kw.pop('approve', None):
             if self.post.status != 'ok':
                 self.post.approve()

http://git-wip-us.apache.org/repos/asf/allura/blob/63740ee2/Allura/allura/lib/widgets/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/discuss.py b/Allura/allura/lib/widgets/discuss.py
index a8e475d..6503d5b 100644
--- a/Allura/allura/lib/widgets/discuss.py
+++ b/Allura/allura/lib/widgets/discuss.py
@@ -339,13 +339,26 @@ class Post(HierWidget):
                                 $('a.reply_post, a.shortlink, form.moderate_spam, form.moderate_approve', post).toggle();
                                 $('div.moderate', post).removeClass('moderate');
                             }
-                            else if (mod === 'Spam'){
-                                $(post).remove();
+                            else if (mod == 'Spam'){
+                                spam_block_display($(post), 'none');
+                                $(post).find('.spam-present').show();
+                            }
+                            else if (mod == 'Undo'){
+                                spam_block_display($(post), 'block');
+                                $(post).find('.spam-present').hide();
                             }
                         }
                     });
                 });
 
+                function spam_block_display($post, display_type) {
+                    $post.find('.display_post').css(
+                        'display', display_type);
+                    $.each($post.find('.options').children(), function() {
+                        $(this).css('display', display_type);
+                    });
+                }
+
                 function get_cm($elem) { return $('.CodeMirror', $elem)[0].CodeMirror; }
 
                 if($('a.edit_post', post)){

http://git-wip-us.apache.org/repos/asf/allura/blob/63740ee2/Allura/allura/nf/allura/css/site_style.css
----------------------------------------------------------------------
diff --git a/Allura/allura/nf/allura/css/site_style.css b/Allura/allura/nf/allura/css/site_style.css
index c0ddbd0..5dd347d 100644
--- a/Allura/allura/nf/allura/css/site_style.css
+++ b/Allura/allura/nf/allura/css/site_style.css
@@ -3428,3 +3428,9 @@ fieldset.preferences legend {
 .ui-autocomplete {
   z-index: 10; /* so autocomplete of tags or username is always over markdown editor components */
 }
+.spam-present {
+  display: none;
+}
+.spam-text {
+  float: left;
+}

http://git-wip-us.apache.org/repos/asf/allura/blob/63740ee2/Allura/allura/templates/widgets/post_widget.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/widgets/post_widget.html b/Allura/allura/templates/widgets/post_widget.html
index 096e829..a8aa822 100644
--- a/Allura/allura/templates/widgets/post_widget.html
+++ b/Allura/allura/templates/widgets/post_widget.html
@@ -43,7 +43,17 @@
       </div>
       {% set pending = value.status == 'pending' %}
       {% set moderator = h.has_access(value, 'moderator')() %}
-      <div class="grid-14" style="width: {{indent == 0 and 525 or (indent <= 40 and 515-indent*10 or 65)}}px">
+      <div class="grid-14 post-content" style="width: {{indent == 0 and 525 or (indent <= 40 and 515-indent*10 or 65)}}px">
+        <div class="spam-present">
+          <span class="spam-text">Comment has been marked as spam.&nbsp;</span>
+          <form method="POST" action="{{value.url()+'moderate'}}">
+            <input type="hidden" name="undo" value="True"/>
+            <a href="" class="moderate_post little_link"><span>Undo</span></a>
+            {{lib.csrf_token()}}
+          </form>
+          <br>
+          <span class="spam-text">You can see all comments posted by this user&nbsp;</span><a href="/p/test/tickets/_discuss/moderate">here</a>
+        </div>
         <div class="display_post{% if pending and moderator %} moderate{% endif %}">
           {% if pending and not moderator %}
             <b>Post awaiting moderation.</b>

http://git-wip-us.apache.org/repos/asf/allura/blob/63740ee2/Allura/allura/tests/functional/test_discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/functional/test_discuss.py b/Allura/allura/tests/functional/test_discuss.py
index d70664b..47218c8 100644
--- a/Allura/allura/tests/functional/test_discuss.py
+++ b/Allura/allura/tests/functional/test_discuss.py
@@ -208,6 +208,14 @@ class TestDiscuss(TestDiscussBase):
             ))
         assert r_bad_filtered.html.tbody.findAll('tr') == []
 
+    def test_undo(self):
+        r = self._make_post('Test post')
+        post_link = str(
+            r.html.find('div', {'class': 'edit_post_form reply'}).find('form')['action'])
+        self.app.post(post_link + 'moderate', params=dict(undo='undo'))
+        post = M.Post.query.find().first()
+        assert post.status == 'pending'
+
     @patch.object(M.Thread, 'is_spam')
     def test_feed_does_not_include_comments_held_for_moderation(self, is_spam):
         is_spam.return_value = True