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/07/25 18:03:11 UTC
[5/8] git commit: [#7524] ticket:613 Site admin page for users audit
log
[#7524] ticket:613 Site admin page for users audit log
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/d5d74a29
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/d5d74a29
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/d5d74a29
Branch: refs/heads/master
Commit: d5d74a29e577064a58a0fcbaa3cf9b4a7da37fcd
Parents: 2e1735c
Author: Igor Bondarenko <je...@gmail.com>
Authored: Mon Jul 21 15:07:06 2014 +0300
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Fri Jul 25 16:02:57 2014 +0000
----------------------------------------------------------------------
Allura/allura/controllers/site_admin.py | 30 ++++++++++++++++
Allura/allura/model/auth.py | 4 +++
.../templates/site_admin_users_audit.html | 37 ++++++++++++++++++++
3 files changed, 71 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/d5d74a29/Allura/allura/controllers/site_admin.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/site_admin.py b/Allura/allura/controllers/site_admin.py
index 3cf4973..96229ee 100644
--- a/Allura/allura/controllers/site_admin.py
+++ b/Allura/allura/controllers/site_admin.py
@@ -36,6 +36,7 @@ from allura.lib.decorators import require_post
from allura.lib.plugin import SiteAdminExtension
from allura.lib.security import require_access
from allura.lib.widgets import form_fields as ffw
+from allura.ext.admin.widgets import AuditLog
from allura import model as M
from allura.command.show_models import dfs, build_model_inheritance_graph
import allura
@@ -49,6 +50,7 @@ log = logging.getLogger(__name__)
class W:
page_list = ffw.PageList()
page_size = ffw.PageSize()
+ audit = AuditLog()
class SiteAdminController(object):
@@ -79,6 +81,7 @@ class SiteAdminController(object):
SitemapEntry('New Projects', base_url + 'new_projects', ui_icon=g.icons['admin']),
SitemapEntry('Reclone Repo', base_url + 'reclone_repo', ui_icon=g.icons['admin']),
SitemapEntry('Task Manager', base_url + 'task_manager?state=busy', ui_icon=g.icons['stats']),
+ SitemapEntry('Users Audit Log', base_url + 'users', ui_icon=g.icons['admin']),
]
for ep_name in sorted(g.entry_points['site_admin']):
g.entry_points['site_admin'][ep_name]().update_sidebar_menu(links)
@@ -239,6 +242,33 @@ class SiteAdminController(object):
mount_point = ''
return dict(prefix=prefix, shortname=shortname, mount_point=mount_point)
+ @expose('jinja:allura:templates/site_admin_users_audit.html')
+ def users(self, username=None, limit=10, page=0, **kwargs):
+ user = M.User.by_username(username)
+ limit = int(limit)
+ page = int(page)
+ if user is None or user.is_anonymous():
+ return dict(
+ entries=[],
+ limit=limit,
+ page=page,
+ count=0,
+ username=username)
+ count = M.AuditLog.for_user(user).count()
+ q = M.AuditLog.for_user(user)
+ q = q.sort('timestamp', -1)
+ q = q.skip(page * limit)
+ if count > limit:
+ q = q.limit(limit)
+ else:
+ limit = count
+ c.widget = W.audit
+ return dict(
+ entries=q.all(),
+ limit=limit,
+ page=page,
+ count=count,
+ username=username)
class TaskManagerController(object):
http://git-wip-us.apache.org/repos/asf/allura/blob/d5d74a29/Allura/allura/model/auth.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/auth.py b/Allura/allura/model/auth.py
index f0ad1c2..2e029df 100644
--- a/Allura/allura/model/auth.py
+++ b/Allura/allura/model/auth.py
@@ -903,6 +903,10 @@ class AuditLog(object):
message = message % kwargs
return cls(project_id=project._id, user_id=user._id, url=url, message=message)
+ @classmethod
+ def for_user(cls, user):
+ return cls.query.find(dict(project_id=None, user_id=user._id))
+
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/d5d74a29/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
new file mode 100644
index 0000000..d4c52fa
--- /dev/null
+++ b/Allura/allura/templates/site_admin_users_audit.html
@@ -0,0 +1,37 @@
+{#-
+ 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.
+-#}
+
+{% extends 'allura:templates/site_admin.html' %}
+
+{% block content %}
+<div class='grid-19'>
+ <form action='' method='GET'>
+ <div class='grid-7'>
+ <label for='username'>Username:</label>
+ <input name='username' value='{{ username if username else ''}}'>
+ </div>
+ <div class='grid-5'>
+ <input type='submit' value='Show'>
+ </div>
+ </form>
+ {% if entries %}
+ {{ c.widget.display(entries=entries, limit=limit, page=page, count=count) }}
+ {% endif %}
+</div>
+{% endblock %}