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/06 20:30:20 UTC

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

Repository: allura
Updated Branches:
  refs/heads/db/8020 [created] 1159ede46


[#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/4479c27a
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/4479c27a
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/4479c27a

Branch: refs/heads/db/8020
Commit: 4479c27ac9a556503270967c131526371ba7368e
Parents: dfa249a
Author: DeV1doR <de...@ukr.net>
Authored: Wed Dec 9 20:27:29 2015 +0200
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed Jan 6 12:51:40 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/4479c27a/Allura/allura/controllers/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/discuss.py b/Allura/allura/controllers/discuss.py
index 4c0c748..13f3921 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
 
@@ -428,6 +429,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
@@ -438,6 +440,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)
@@ -447,7 +452,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/4479c27a/Allura/allura/lib/widgets/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/discuss.py b/Allura/allura/lib/widgets/discuss.py
index 1e3d632..62adb16 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/4479c27a/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/4479c27a/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 7385357..a91b0c4 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'})


[5/8] 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/b6dc95bb
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/b6dc95bb
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/b6dc95bb

Branch: refs/heads/db/8020
Commit: b6dc95bbe26269aeb9dc1bdc29a4774952e0b194
Parents: 1aebc64
Author: Igor Bondarenko <je...@gmail.com>
Authored: Thu Dec 24 14:44:50 2015 +0200
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed Jan 6 12:51:41 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/b6dc95bb/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">


[6/8] 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/d11146fc
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/d11146fc
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/d11146fc

Branch: refs/heads/db/8020
Commit: d11146fc9c860ef93e06e73570f2fb9d657ef37b
Parents: 83458a4
Author: DeV1doR <de...@ukr.net>
Authored: Sat Dec 12 17:18:08 2015 +0200
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed Jan 6 12:51:41 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/d11146fc/Allura/allura/controllers/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/discuss.py b/Allura/allura/controllers/discuss.py
index add5ef3..40320ee 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/d11146fc/Allura/allura/lib/widgets/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/discuss.py b/Allura/allura/lib/widgets/discuss.py
index 2d4dfea..ac4722d 100644
--- a/Allura/allura/lib/widgets/discuss.py
+++ b/Allura/allura/lib/widgets/discuss.py
@@ -342,23 +342,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/d11146fc/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/d11146fc/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


[4/8] 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/7dc7af46
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/7dc7af46
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/7dc7af46

Branch: refs/heads/db/8020
Commit: 7dc7af4606192f6499d95b286c5a23964b315dff
Parents: c5fa6b7
Author: DeV1doR <de...@ukr.net>
Authored: Fri Dec 11 13:56:05 2015 +0200
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed Jan 6 12:51:41 2016 -0500

----------------------------------------------------------------------
 Allura/allura/controllers/discuss.py             |  2 ++
 Allura/allura/lib/widgets/discuss.py             | 15 ++++++++++++++-
 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, 41 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/7dc7af46/Allura/allura/controllers/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/discuss.py b/Allura/allura/controllers/discuss.py
index 818cc10..add5ef3 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/7dc7af46/Allura/allura/lib/widgets/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/discuss.py b/Allura/allura/lib/widgets/discuss.py
index 94310e2..5badc98 100644
--- a/Allura/allura/lib/widgets/discuss.py
+++ b/Allura/allura/lib/widgets/discuss.py
@@ -341,12 +341,25 @@ class Post(HierWidget):
                                 $('div.moderate', post).removeClass('moderate');
                             }
                             else if (mod == 'Spam'){
-                                $(post).remove();
+                                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/7dc7af46/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 7367432..76606af 100644
--- a/Allura/allura/nf/allura/css/site_style.css
+++ b/Allura/allura/nf/allura/css/site_style.css
@@ -3422,3 +3422,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;
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/allura/blob/7dc7af46/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/7dc7af46/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


[2/8] 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/1aebc645
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/1aebc645
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/1aebc645

Branch: refs/heads/db/8020
Commit: 1aebc645feca28ca8ed7686cd561adca59e93d4d
Parents: d11146f
Author: DeV1doR <de...@ukr.net>
Authored: Mon Dec 21 18:15:56 2015 +0200
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed Jan 6 12:51:41 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/1aebc645/Allura/allura/lib/widgets/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/discuss.py b/Allura/allura/lib/widgets/discuss.py
index ac4722d..52e9c32 100644
--- a/Allura/allura/lib/widgets/discuss.py
+++ b/Allura/allura/lib/widgets/discuss.py
@@ -341,37 +341,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/1aebc645/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 76606af..0e60c81 100644
--- a/Allura/allura/nf/allura/css/site_style.css
+++ b/Allura/allura/nf/allura/css/site_style.css
@@ -3424,6 +3424,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/1aebc645/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>


[3/8] 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/c5fa6b7a
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/c5fa6b7a
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/c5fa6b7a

Branch: refs/heads/db/8020
Commit: c5fa6b7a7dcecc1cdf6d7cf4a1cc7820327a5619
Parents: 4479c27
Author: DeV1doR <de...@ukr.net>
Authored: Thu Dec 10 19:22:04 2015 +0200
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed Jan 6 12:51:41 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/c5fa6b7a/Allura/allura/controllers/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/discuss.py b/Allura/allura/controllers/discuss.py
index 13f3921..818cc10 100644
--- a/Allura/allura/controllers/discuss.py
+++ b/Allura/allura/controllers/discuss.py
@@ -441,8 +441,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/c5fa6b7a/Allura/allura/lib/widgets/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/discuss.py b/Allura/allura/lib/widgets/discuss.py
index 62adb16..94310e2 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/c5fa6b7a/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/c5fa6b7a/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 a91b0c4..2e3ddaa 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)


[8/8] 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/1159ede4
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/1159ede4
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/1159ede4

Branch: refs/heads/db/8020
Commit: 1159ede4601f309e246d81220f3906708d2181c3
Parents: b6dc95b
Author: Dave Brondsema <da...@brondsema.net>
Authored: Wed Jan 6 13:28:58 2016 -0500
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed Jan 6 13:28:58 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/1159ede4/Allura/allura/controllers/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/discuss.py b/Allura/allura/controllers/discuss.py
index 40320ee..41a8cf1 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
@@ -371,17 +370,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/1159ede4/Allura/allura/lib/widgets/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/discuss.py b/Allura/allura/lib/widgets/discuss.py
index 52e9c32..bb230dd 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/1159ede4/Allura/allura/model/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/discuss.py b/Allura/allura/model/discuss.py
index 69bf556..96096da 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/1159ede4/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/1159ede4/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/1159ede4/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/1159ede4/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/1159ede4/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


[7/8] 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/83458a45
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/83458a45
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/83458a45

Branch: refs/heads/db/8020
Commit: 83458a45037b757f806ff190be8c108ad81369e5
Parents: 7dc7af4
Author: DeV1doR <de...@ukr.net>
Authored: Fri Dec 11 15:14:57 2015 +0200
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed Jan 6 12:51:41 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/83458a45/Allura/allura/lib/widgets/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/discuss.py b/Allura/allura/lib/widgets/discuss.py
index 5badc98..2d4dfea 100644
--- a/Allura/allura/lib/widgets/discuss.py
+++ b/Allura/allura/lib/widgets/discuss.py
@@ -347,6 +347,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/83458a45/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 %}