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<script>alert(1)</script><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