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/09/29 18:17:35 UTC
[04/27] git commit: [#7657] ticket:649 Display basic user info
[#7657] ticket:649 Display basic user info
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/f54be441
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/f54be441
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/f54be441
Branch: refs/heads/db/7657
Commit: f54be4410cfd44723bd1550673549c8ac36f705b
Parents: da05789
Author: Igor Bondarenko <je...@gmail.com>
Authored: Fri Sep 12 11:36:29 2014 +0300
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Fri Sep 26 16:39:43 2014 +0000
----------------------------------------------------------------------
Allura/allura/controllers/site_admin.py | 15 ++++
Allura/allura/model/auth.py | 5 ++
.../templates/site_admin_user_details.html | 75 ++++++++++++++++++++
3 files changed, 95 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/f54be441/Allura/allura/controllers/site_admin.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/site_admin.py b/Allura/allura/controllers/site_admin.py
index 8c56f9f..b61db8b 100644
--- a/Allura/allura/controllers/site_admin.py
+++ b/Allura/allura/controllers/site_admin.py
@@ -62,6 +62,7 @@ class SiteAdminController(object):
def __init__(self):
self.task_manager = TaskManagerController()
c.site_admin_sidebar_menu = self.sidebar_menu()
+ self.user = AdminUserDetailsController()
def _check_security(self):
with h.push_context(config.get('site_admin_project', 'allura'),
@@ -501,6 +502,20 @@ class StatsController(object):
return dict(neighborhoods=neighborhoods)
+class AdminUserDetailsController(object):
+
+ @expose('jinja:allura:templates/site_admin_user_details.html')
+ def _default(self, username):
+ user = M.User.by_username(username)
+ if not user:
+ raise HTTPNotFound()
+ projects = user.my_projects().all()
+ return {
+ 'user': user,
+ 'projects': projects,
+ }
+
+
class StatsSiteAdminExtension(SiteAdminExtension):
controllers = {'stats': StatsController}
http://git-wip-us.apache.org/repos/asf/allura/blob/f54be441/Allura/allura/model/auth.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/auth.py b/Allura/allura/model/auth.py
index 4460636..d110412 100644
--- a/Allura/allura/model/auth.py
+++ b/Allura/allura/model/auth.py
@@ -22,6 +22,7 @@ import logging
import urllib
import hmac
import hashlib
+import calendar
from urlparse import urlparse
from email import header
from hashlib import sha256
@@ -731,6 +732,10 @@ class User(MappedClass, ActivityNode, ActivityObject, SearchIndexable):
url=h.absurl(self.url()),
)
+ def registration_date(self):
+ p = plugin.AuthenticationProvider.get(request)
+ return p.user_registration_date(self)
+
class OldProjectRole(MappedClass):
http://git-wip-us.apache.org/repos/asf/allura/blob/f54be441/Allura/allura/templates/site_admin_user_details.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/site_admin_user_details.html b/Allura/allura/templates/site_admin_user_details.html
new file mode 100644
index 0000000..9aba434
--- /dev/null
+++ b/Allura/allura/templates/site_admin_user_details.html
@@ -0,0 +1,75 @@
+{#-
+ 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.
+-#}
+{% set page = 'user_details' %}
+{% extends 'allura:templates/site_admin.html' %}
+{% set hide_left_bar=True %}
+
+{% block title %}User Details{% endblock %}
+{% block header %}User Details{% endblock %}
+
+{% block content %}
+ {% block general_info %}
+ <div class="grid-23">
+ <fieldset>
+ <legend>General</legend>
+ <ul>
+ <li>Username: {{ user.username }}</li>
+ <li>Full name: {{ user.get_pref('display_name') }}</li>
+ <li>Registered: {{ user.registration_date() }}</li>
+ </ul>
+ </fieldset>
+ </div>
+ {% endblock general_info %}
+
+ {% block session_info %}
+ <div class="grid-23">
+ <fieldset>
+ <legend>Session</legend>
+ <h3>Last login</h3>
+ <ul>
+ <li>Date: {{ user.last_access.login_date }}</li>
+ <li>IP: {{ user.last_access.login_ip }}</li>
+ <li>UA: {{ user.last_access.login_ua }}</li>
+ </ul>
+ <h3>Last page access</h3>
+ <ul>
+ <li>Date: {{ user.last_access.session_date }}</li>
+ <li>IP: {{ user.last_access.session_ip }}</li>
+ <li>UA: {{ user.last_access.session_ua }}</li>
+ </ul>
+ </fieldset>
+ </div>
+ {% endblock session_info %}
+
+ {% block extra_info %}
+ {% endblock extra_info %}
+
+ {% block user_projects %}
+ <div class="grid-23">
+ <fieldset>
+ <legend>Projects</legend>
+ <ul>
+ {% for p in projects %}
+ <li><a href="{{ p.url() }}">{{p.name}}</a></li>
+ {% endfor %}
+ </ul>
+ </fieldset>
+ </div>
+ {% endblock user_projects %}
+{% endblock %}