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 2014/08/19 18:31:21 UTC

[1/6] git commit: [#7593] ticket:627 Add ability to add audit entries for users

Repository: allura
Updated Branches:
  refs/heads/master a16197bc6 -> e0ab435c0


[#7593] ticket:627 Add ability to add audit entries for users


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

Branch: refs/heads/master
Commit: 3bc4372a63a835d91b87912658cc867272ce574f
Parents: a16197b
Author: Igor Bondarenko <je...@gmail.com>
Authored: Thu Aug 7 13:37:09 2014 +0300
Committer: discort <le...@bk.ru>
Committed: Tue Aug 19 12:15:05 2014 +0300

----------------------------------------------------------------------
 Allura/allura/controllers/site_admin.py             | 14 ++++++++++++++
 Allura/allura/model/auth.py                         |  6 ++++++
 Allura/allura/templates/site_admin_users_audit.html | 13 +++++++++++++
 3 files changed, 33 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/3bc4372a/Allura/allura/controllers/site_admin.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/site_admin.py b/Allura/allura/controllers/site_admin.py
index 51ad068..27b0ed9 100644
--- a/Allura/allura/controllers/site_admin.py
+++ b/Allura/allura/controllers/site_admin.py
@@ -268,8 +268,22 @@ class SiteAdminController(object):
             limit=limit,
             page=page,
             count=count,
+            audit_user=user,
             username=username)
 
+    @expose()
+    @require_post()
+    def add_audit_trail_entry(self, **kw):
+        username = kw.get('username')
+        comment = kw.get('comment')
+        user = M.User.by_username(username)
+        if user and not user.is_anonymous() and comment:
+            M.AuditLog.comment_user(comment, by=c.user, user=user)
+            flash('Comment added', 'ok')
+        else:
+            flash('Can not add comment "%s" for user %s' % (comment, user))
+        redirect(request.referer)
+
 class TaskManagerController(object):
 
     def _check_security(self):

http://git-wip-us.apache.org/repos/asf/allura/blob/3bc4372a/Allura/allura/model/auth.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/auth.py b/Allura/allura/model/auth.py
index c9ba690..509b60a 100644
--- a/Allura/allura/model/auth.py
+++ b/Allura/allura/model/auth.py
@@ -915,6 +915,12 @@ class AuditLog(object):
         kwargs['project'] = None
         return cls.log(message, *args, **kwargs)
 
+    @classmethod
+    def comment_user(cls, message, *args, **kwargs):
+        by = kwargs.pop('by', c.user)
+        message = u'Comment by %s: %s' % (by.username, message)
+        return cls.log_user(message, *args, **kwargs)
+
 main_orm_session.mapper(AuditLog, audit_log, properties=dict(
     project_id=ForeignIdProperty('Project'),
     project=RelationProperty('Project'),

http://git-wip-us.apache.org/repos/asf/allura/blob/3bc4372a/Allura/allura/templates/site_admin_users_audit.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/site_admin_users_audit.html b/Allura/allura/templates/site_admin_users_audit.html
index d4c52fa..6c0fb5d 100644
--- a/Allura/allura/templates/site_admin_users_audit.html
+++ b/Allura/allura/templates/site_admin_users_audit.html
@@ -18,6 +18,7 @@
 -#}
 
 {% extends 'allura:templates/site_admin.html' %}
+{% import 'allura:templates/jinja_master/lib.html' as lib with context %}
 
 {% block content %}
 <div class='grid-19'>
@@ -30,6 +31,18 @@
       <input type='submit' value='Show'>
     </div>
   </form>
+  {% if audit_user and not audit_user.is_anonymous() %}
+    <form action='/nf/admin/add_audit_trail_entry' method='POST'>
+      <div class='grid-7'>
+        <label for='comment'>Comment:</label><input name='comment'>
+      </div>
+      <div class='grid-5'>
+        <input type='hidden' name='username' value='{{ audit_user.username }}'>
+        <input type='submit' value='Add comment'>
+        {{lib.csrf_token()}}
+      </div>
+    </form>
+  {% endif %}
   {% if entries %}
     {{ c.widget.display(entries=entries, limit=limit, page=page, count=count) }}
   {% endif %}


[3/6] git commit: [#7593] ticket:627 Tests for adding audit trail entries

Posted by br...@apache.org.
[#7593] ticket:627 Tests for adding audit trail entries


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

Branch: refs/heads/master
Commit: 206fcd59977cd9ba340a5d3584b75909e12276b5
Parents: df926ba
Author: Igor Bondarenko <je...@gmail.com>
Authored: Thu Aug 7 15:03:47 2014 +0300
Committer: discort <le...@bk.ru>
Committed: Tue Aug 19 12:15:06 2014 +0300

----------------------------------------------------------------------
 .../allura/tests/functional/test_site_admin.py  | 27 ++++++++++++++++++++
 1 file changed, 27 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/206fcd59/Allura/allura/tests/functional/test_site_admin.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/functional/test_site_admin.py b/Allura/allura/tests/functional/test_site_admin.py
index 8dbc2f6..44c1b86 100644
--- a/Allura/allura/tests/functional/test_site_admin.py
+++ b/Allura/allura/tests/functional/test_site_admin.py
@@ -1,3 +1,4 @@
+# coding: utf-8
 #       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
@@ -179,6 +180,32 @@ class TestSiteAdmin(TestController):
         assert_not_in('test activity user 1', r)
         assert_in('test activity user 2', r)
 
+    def test_add_audit_trail_entry_access(self):
+        self.app.get('/nf/admin/add_audit_log_entry', status=404)  # GET is not allowed
+        r = self.app.post('/nf/admin/add_audit_log_entry',
+                          extra_environ={'username': '*anonymous'},
+                          status=302)
+        assert_equal(r.location, 'http://localhost/auth/')
+
+    def test_add_comment_on_users_trail_page(self):
+        r = self.app.get('/nf/admin/users')
+        assert_not_in('Add comment', r)
+        r = self.app.get('/nf/admin/users?username=fake-user')
+        assert_not_in('Add comment', r)
+        r = self.app.get('/nf/admin/users?username=test-user')
+        assert_in('Add comment', r)
+
+    def test_add_comment(self):
+        r = self.app.get('/nf/admin/users?username=test-user')
+        assert_not_in(u'Comment by test-admin: I was hêre!', r)
+        form = r.forms[1]
+        assert_equal(form['username'].value, 'test-user')
+        form['comment'] = u'I was hêre!'
+        r = form.submit()
+        assert_in(u'Comment added', self.webflash(r))
+        r = self.app.get('/nf/admin/users?username=test-user')
+        assert_in(u'Comment by test-admin: I was hêre!', r)
+
 
 @task
 def test_task(*args, **kw):


[4/6] git commit: [#7593] ticket:627 Change input to text area to give more space for comment

Posted by br...@apache.org.
[#7593] ticket:627 Change input to text area to give more space for comment


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

Branch: refs/heads/master
Commit: df926bad405502b1448f0900a0bc7b0eb1a214a5
Parents: 3bc4372
Author: Igor Bondarenko <je...@gmail.com>
Authored: Thu Aug 7 14:43:06 2014 +0300
Committer: discort <le...@bk.ru>
Committed: Tue Aug 19 12:15:06 2014 +0300

----------------------------------------------------------------------
 Allura/allura/templates/site_admin_users_audit.html | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/df926bad/Allura/allura/templates/site_admin_users_audit.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/site_admin_users_audit.html b/Allura/allura/templates/site_admin_users_audit.html
index 6c0fb5d..7a6859b 100644
--- a/Allura/allura/templates/site_admin_users_audit.html
+++ b/Allura/allura/templates/site_admin_users_audit.html
@@ -33,8 +33,11 @@
   </form>
   {% if audit_user and not audit_user.is_anonymous() %}
     <form action='/nf/admin/add_audit_trail_entry' method='POST'>
-      <div class='grid-7'>
-        <label for='comment'>Comment:</label><input name='comment'>
+      <div class='grid-19'>
+        <label for='comment'>Comment:</label>
+      </div>
+      <div class='grid-19'>
+        <textarea name="comment" cols="38" rows="5"></textarea>
       </div>
       <div class='grid-5'>
         <input type='hidden' name='username' value='{{ audit_user.username }}'>


[2/6] git commit: [#7593] ticket:636 set by param to required and added g.markdown.convert to the message

Posted by br...@apache.org.
[#7593] ticket:636 set by param to required and added g.markdown.convert to the message


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

Branch: refs/heads/master
Commit: 29ccc56fd241f3d398b762b9725ec6b5f8a3188b
Parents: 206fcd5
Author: discort <le...@bk.ru>
Authored: Tue Aug 19 12:12:15 2014 +0300
Committer: discort <le...@bk.ru>
Committed: Tue Aug 19 12:15:06 2014 +0300

----------------------------------------------------------------------
 Allura/allura/controllers/site_admin.py              | 4 +++-
 Allura/allura/ext/admin/templates/widgets/audit.html | 2 +-
 Allura/allura/model/auth.py                          | 6 ++++--
 3 files changed, 8 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/29ccc56f/Allura/allura/controllers/site_admin.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/site_admin.py b/Allura/allura/controllers/site_admin.py
index 27b0ed9..68af897 100644
--- a/Allura/allura/controllers/site_admin.py
+++ b/Allura/allura/controllers/site_admin.py
@@ -28,6 +28,7 @@ from pylons import tmpl_context as c
 from pylons import request
 from formencode import validators, Invalid
 from webob.exc import HTTPNotFound
+import HTMLParser
 
 from allura.app import SitemapEntry
 from allura.lib import helpers as h
@@ -278,12 +279,13 @@ class SiteAdminController(object):
         comment = kw.get('comment')
         user = M.User.by_username(username)
         if user and not user.is_anonymous() and comment:
-            M.AuditLog.comment_user(comment, by=c.user, user=user)
+            M.AuditLog.comment_user(c.user, comment, user=user)
             flash('Comment added', 'ok')
         else:
             flash('Can not add comment "%s" for user %s' % (comment, user))
         redirect(request.referer)
 
+
 class TaskManagerController(object):
 
     def _check_security(self):

http://git-wip-us.apache.org/repos/asf/allura/blob/29ccc56f/Allura/allura/ext/admin/templates/widgets/audit.html
----------------------------------------------------------------------
diff --git a/Allura/allura/ext/admin/templates/widgets/audit.html b/Allura/allura/ext/admin/templates/widgets/audit.html
index e26f075..36de8ae 100644
--- a/Allura/allura/ext/admin/templates/widgets/audit.html
+++ b/Allura/allura/ext/admin/templates/widgets/audit.html
@@ -37,7 +37,7 @@
           <td>{{ entry.url_str }}</td>
         </tr>
         <tr>
-          <td></td><td colspan="2">{{ entry.message }}</td>
+          <td></td><td colspan="2">{{ g.markdown.convert(entry.message)|safe }}</td>
         </tr>
         {% endfor %}
       </tbody>

http://git-wip-us.apache.org/repos/asf/allura/blob/29ccc56f/Allura/allura/model/auth.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/auth.py b/Allura/allura/model/auth.py
index 509b60a..8681710 100644
--- a/Allura/allura/model/auth.py
+++ b/Allura/allura/model/auth.py
@@ -41,6 +41,7 @@ from ming.orm import FieldProperty, RelationProperty, ForeignIdProperty
 from ming.orm.declarative import MappedClass
 from ming.orm.ormsession import ThreadLocalORMSession
 from ming.utils import LazyProperty
+from ming.schema import ParticularScalar
 
 import allura.tasks.mail_tasks
 from allura.lib import helpers as h
@@ -863,6 +864,7 @@ class ProjectRole(MappedClass):
         return self.query.find(dict(project_id=project._id,
                                     user_id={'$ne': None}, roles=self._id)).all()
 
+
 audit_log = collection(
     'audit_log', main_doc_session,
     Field('_id', S.ObjectId()),
@@ -916,11 +918,11 @@ class AuditLog(object):
         return cls.log(message, *args, **kwargs)
 
     @classmethod
-    def comment_user(cls, message, *args, **kwargs):
-        by = kwargs.pop('by', c.user)
+    def comment_user(cls, by, message, *args, **kwargs):
         message = u'Comment by %s: %s' % (by.username, message)
         return cls.log_user(message, *args, **kwargs)
 
+
 main_orm_session.mapper(AuditLog, audit_log, properties=dict(
     project_id=ForeignIdProperty('Project'),
     project=RelationProperty('Project'),


[6/6] git commit: [#7593] use nl2br in audit log rendering

Posted by br...@apache.org.
[#7593] use nl2br in audit log rendering

markdown rendering was causing problems with some project audit log lines like:
`updated "post" permission: "*authenticated" => "*authenticated, *anonymous" for tickets`
which contain `*` and was causing italics.  It also was adding some white space
and seemed to make long audit logs take a little longer to render.


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

Branch: refs/heads/master
Commit: e0ab435c03caea0b9498b7f0b961e56509b70733
Parents: f3b4ddd
Author: Dave Brondsema <db...@slashdotmedia.com>
Authored: Tue Aug 19 16:28:40 2014 +0000
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Tue Aug 19 16:28:40 2014 +0000

----------------------------------------------------------------------
 Allura/allura/config/app_cfg.py                      | 1 +
 Allura/allura/ext/admin/templates/widgets/audit.html | 2 +-
 Allura/allura/lib/helpers.py                         | 7 ++++++-
 Allura/allura/tests/test_helpers.py                  | 6 ++++++
 4 files changed, 14 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/e0ab435c/Allura/allura/config/app_cfg.py
----------------------------------------------------------------------
diff --git a/Allura/allura/config/app_cfg.py b/Allura/allura/config/app_cfg.py
index bcca0c2..b21979b 100644
--- a/Allura/allura/config/app_cfg.py
+++ b/Allura/allura/config/app_cfg.py
@@ -105,6 +105,7 @@ class ForgeConfig(AppConfig):
         jinja2_env.filters['datetimeformat'] = helpers.datetimeformat
         jinja2_env.filters['filter'] = lambda s,t=None: filter(t and jinja2_env.tests[t], s)
         jinja2_env.filters['map'] = helpers.map_jinja_filter
+        jinja2_env.filters['nl2br'] = helpers.nl2br_jinja_filter
         jinja2_env.globals.update({'hasattr': hasattr})
         config['pylons.app_globals'].jinja2_env = jinja2_env
         # Jinja's unable to request c's attributes without strict_c

http://git-wip-us.apache.org/repos/asf/allura/blob/e0ab435c/Allura/allura/ext/admin/templates/widgets/audit.html
----------------------------------------------------------------------
diff --git a/Allura/allura/ext/admin/templates/widgets/audit.html b/Allura/allura/ext/admin/templates/widgets/audit.html
index 36de8ae..0339be8 100644
--- a/Allura/allura/ext/admin/templates/widgets/audit.html
+++ b/Allura/allura/ext/admin/templates/widgets/audit.html
@@ -37,7 +37,7 @@
           <td>{{ entry.url_str }}</td>
         </tr>
         <tr>
-          <td></td><td colspan="2">{{ g.markdown.convert(entry.message)|safe }}</td>
+          <td></td><td colspan="2">{{ entry.message|nl2br }}</td>
         </tr>
         {% endfor %}
       </tbody>

http://git-wip-us.apache.org/repos/asf/allura/blob/e0ab435c/Allura/allura/lib/helpers.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/helpers.py b/Allura/allura/lib/helpers.py
index da731ef..5d978fa 100644
--- a/Allura/allura/lib/helpers.py
+++ b/Allura/allura/lib/helpers.py
@@ -50,7 +50,7 @@ from tg.decorators import before_validate
 from formencode.variabledecode import variable_decode
 import formencode
 from jinja2 import Markup
-from jinja2.filters import contextfilter
+from jinja2.filters import contextfilter, escape
 from paste.deploy.converters import asbool, aslist
 
 from webhelpers import date, feedgenerator, html, number, misc, text
@@ -774,6 +774,11 @@ prefixes are used (Mebi, Gibi).
         return '%.1f %s' % ((base * bytes / unit), prefix)
 
 
+def nl2br_jinja_filter(value):
+    result = '<br>\n'.join(escape(line) for line in value.split('\n'))
+    return Markup(result)
+
+
 def log_if_changed(artifact, attr, new_val, message):
     """Set `artifact.attr` to `new_val` if changed. Add AuditLog record."""
     from allura import model as M

http://git-wip-us.apache.org/repos/asf/allura/blob/e0ab435c/Allura/allura/tests/test_helpers.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/test_helpers.py b/Allura/allura/tests/test_helpers.py
index c901fbf..4cced7e 100644
--- a/Allura/allura/tests/test_helpers.py
+++ b/Allura/allura/tests/test_helpers.py
@@ -30,6 +30,7 @@ from datadiff import tools as dd
 from webob import Request
 from webob.exc import HTTPUnauthorized
 from ming.orm import ThreadLocalORMSession
+from jinja2 import Markup
 
 from allura import model as M
 from allura.lib import helpers as h
@@ -314,6 +315,11 @@ def test_datetimeformat():
     assert h.datetimeformat(date(2013, 01, 01)) == '2013-01-01 00:00:00'
 
 
+def test_nl2br_jinja_filter():
+    assert_equals(h.nl2br_jinja_filter('foo<script>alert(1)</script>\nbar\nbaz'),
+            Markup(u'foo&lt;script&gt;alert(1)&lt;/script&gt;<br>\nbar<br>\nbaz'))
+
+
 def test_split_select_field_options():
     assert_equals(h.split_select_field_options('"test message" test2'),
                   ['test message', 'test2'])


[5/6] git commit: [#7593] ticket:636 Remove unused imports

Posted by br...@apache.org.
[#7593] ticket:636 Remove unused imports


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

Branch: refs/heads/master
Commit: f3b4ddd94558a50aaac22422ebada45d48feee9d
Parents: 29ccc56
Author: Igor Bondarenko <je...@gmail.com>
Authored: Tue Aug 19 10:20:56 2014 +0000
Committer: Igor Bondarenko <je...@gmail.com>
Committed: Tue Aug 19 10:20:56 2014 +0000

----------------------------------------------------------------------
 Allura/allura/controllers/site_admin.py | 1 -
 Allura/allura/model/auth.py             | 1 -
 2 files changed, 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/f3b4ddd9/Allura/allura/controllers/site_admin.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/site_admin.py b/Allura/allura/controllers/site_admin.py
index 68af897..0b215f8 100644
--- a/Allura/allura/controllers/site_admin.py
+++ b/Allura/allura/controllers/site_admin.py
@@ -28,7 +28,6 @@ from pylons import tmpl_context as c
 from pylons import request
 from formencode import validators, Invalid
 from webob.exc import HTTPNotFound
-import HTMLParser
 
 from allura.app import SitemapEntry
 from allura.lib import helpers as h

http://git-wip-us.apache.org/repos/asf/allura/blob/f3b4ddd9/Allura/allura/model/auth.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/auth.py b/Allura/allura/model/auth.py
index 8681710..5d7900b 100644
--- a/Allura/allura/model/auth.py
+++ b/Allura/allura/model/auth.py
@@ -41,7 +41,6 @@ from ming.orm import FieldProperty, RelationProperty, ForeignIdProperty
 from ming.orm.declarative import MappedClass
 from ming.orm.ormsession import ThreadLocalORMSession
 from ming.utils import LazyProperty
-from ming.schema import ParticularScalar
 
 import allura.tasks.mail_tasks
 from allura.lib import helpers as h