You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by je...@apache.org on 2014/09/12 12:32:28 UTC

[1/5] git commit: [#7657] ticket:649 Display basic user info

Repository: allura
Updated Branches:
  refs/heads/je/42cc_7657 [created] 64e50fd56


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

Branch: refs/heads/je/42cc_7657
Commit: 0cc072f25a937471f52eda3560938c305167ec58
Parents: 0855719
Author: Igor Bondarenko <je...@gmail.com>
Authored: Fri Sep 12 11:36:29 2014 +0300
Committer: Igor Bondarenko <je...@gmail.com>
Committed: Fri Sep 12 11:36:29 2014 +0300

----------------------------------------------------------------------
 Allura/allura/controllers/site_admin.py         | 15 ++++
 Allura/allura/model/auth.py                     |  5 ++
 Allura/allura/templates/site_admin.html         |  2 +-
 .../templates/site_admin_user_details.html      | 74 ++++++++++++++++++++
 4 files changed, 95 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/0cc072f2/Allura/allura/controllers/site_admin.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/site_admin.py b/Allura/allura/controllers/site_admin.py
index 4a96298..9bfb9b4 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'),
@@ -470,6 +471,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/0cc072f2/Allura/allura/model/auth.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/auth.py b/Allura/allura/model/auth.py
index b7ea34b..48f04f5 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
@@ -689,6 +690,10 @@ class User(MappedClass, ActivityNode, ActivityObject):
             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/0cc072f2/Allura/allura/templates/site_admin.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/site_admin.html b/Allura/allura/templates/site_admin.html
index d83f06e..0617da6 100644
--- a/Allura/allura/templates/site_admin.html
+++ b/Allura/allura/templates/site_admin.html
@@ -20,7 +20,7 @@
 {% from 'allura:templates/jinja_master/sidebar_menu.html' import sidebar_item with context %}
 
 {% set hide_left_bar=False %}
-{% if page == 'new_projects' %}
+{% if page in ['new_projects', 'user_details'] %}
   {% set hide_left_bar=True %}
 {% endif %}
 {% extends g.theme.master %}

http://git-wip-us.apache.org/repos/asf/allura/blob/0cc072f2/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..155fa20
--- /dev/null
+++ b/Allura/allura/templates/site_admin_user_details.html
@@ -0,0 +1,74 @@
+{#-
+       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' %}
+
+{% 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 %}


[4/5] git commit: [#7657] ticket:649 Add link to user profile

Posted by je...@apache.org.
[#7657] ticket:649 Add link to user profile


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

Branch: refs/heads/je/42cc_7657
Commit: 030dfdda82fbb382ef42987db4ed11929cbe79bd
Parents: 1657505
Author: Igor Bondarenko <je...@gmail.com>
Authored: Fri Sep 12 11:52:25 2014 +0300
Committer: Igor Bondarenko <je...@gmail.com>
Committed: Fri Sep 12 11:52:25 2014 +0300

----------------------------------------------------------------------
 Allura/allura/templates/site_admin_user_details.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/030dfdda/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
index c4f0965..b69ab06 100644
--- a/Allura/allura/templates/site_admin_user_details.html
+++ b/Allura/allura/templates/site_admin_user_details.html
@@ -28,7 +28,7 @@
       <fieldset>
         <legend>General</legend>
         <ul>
-          <li>Username: {{ user.username }}</li>
+          <li>Username: {{ user.username }} (<a href="{{ user.url() }}">Go to profile page</a>)</li>
           <li>Full name: {{ user.get_pref('display_name') }}</li>
           <li>Registered: {{ user.registration_date() }} ({{ h.ago(user.registration_date()) }})</li>
         </ul>


[5/5] git commit: [#7657] ticket:649 Add simple test

Posted by je...@apache.org.
[#7657] ticket:649 Add simple test


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

Branch: refs/heads/je/42cc_7657
Commit: 64e50fd56bd0723ffb47a00b024b211f164ca100
Parents: 030dfdd
Author: Igor Bondarenko <je...@gmail.com>
Authored: Fri Sep 12 12:37:56 2014 +0300
Committer: Igor Bondarenko <je...@gmail.com>
Committed: Fri Sep 12 12:37:56 2014 +0300

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


http://git-wip-us.apache.org/repos/asf/allura/blob/64e50fd5/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 ab1ffc4..a6ed3d1 100644
--- a/Allura/allura/tests/functional/test_site_admin.py
+++ b/Allura/allura/tests/functional/test_site_admin.py
@@ -17,6 +17,7 @@
 #       under the License.
 
 import json
+import datetime as dt
 
 from mock import patch, MagicMock
 from nose.tools import assert_equal, assert_in, assert_not_in
@@ -263,6 +264,40 @@ class TestProjectsSearch(TestController):
                            'private', 'url', 'Details'])
 
 
+class TestUserDetails(TestController):
+
+    def test_404(self):
+        self.app.get('/nf/admin/user/does-not-exist/', status=404)
+
+    def test_general_info(self):
+        user = M.User.by_username('test-admin')
+        user.registration_date = lambda: dt.datetime(2014, 9, 1, 9, 9, 9)
+        user.last_access = {'login_date': dt.datetime(2014, 9, 2, 6, 6, 6),
+                            'login_ua': 'browser of the future 1.0',
+                            'login_ip': '8.8.8.8',
+                            'session_date': dt.datetime(2014, 9, 12, 6, 6, 6),
+                            'session_ua': 'browser of the future 1.1',
+                            'session_ip': '7.7.7.7'}
+        r = self.app.get('/nf/admin/user/test-admin/')
+        # general info
+        assert_in('Username: test-admin', r)
+        assert_in('Full name: Test Admin', r)
+        assert_in('Registered: 2014-09-01 09:09:09', r)
+        # session info
+        assert_in('Date: 2014-09-02 06:06:06', r)
+        assert_in('IP: 8.8.8.8', r)
+        assert_in('UA: browser of the future 1.0', r)
+        assert_in('Date: 2014-09-12 06:06:06', r)
+        assert_in('IP: 7.7.7.7', r)
+        assert_in('UA: browser of the future 1.1', r)
+        # list of projects
+        projects = r.html.findAll('fieldset')[-1]
+        projects = [e.getText() for e in projects.findAll('li')]
+        assert_in('Test 2', projects)
+        assert_in('Test Project', projects)
+        assert_in('Adobe project 1', projects)
+
+
 @task
 def test_task(*args, **kw):
     """test_task doc string"""


[2/5] git commit: [#7657] ticket:649 Move fieldset/legend css to site_style

Posted by je...@apache.org.
[#7657] ticket:649 Move fieldset/legend css to site_style


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

Branch: refs/heads/je/42cc_7657
Commit: 9a20f3849ca5e6bb20a91a8a602bb07ddb970a0d
Parents: 0cc072f
Author: Igor Bondarenko <je...@gmail.com>
Authored: Fri Sep 12 11:39:55 2014 +0300
Committer: Igor Bondarenko <je...@gmail.com>
Committed: Fri Sep 12 11:39:55 2014 +0300

----------------------------------------------------------------------
 Allura/allura/nf/allura/css/site_style.css | 14 ++++++++++++++
 Allura/allura/templates/user_prefs.html    | 13 -------------
 2 files changed, 14 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/9a20f384/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 8f8d5ab..963f071 100644
--- a/Allura/allura/nf/allura/css/site_style.css
+++ b/Allura/allura/nf/allura/css/site_style.css
@@ -3497,3 +3497,17 @@ ul.dropdown ul li a:hover {
     top: 10px;
 }
 .strikethrough { text-decoration: line-through; }
+
+fieldset {
+  margin-bottom: 2em;
+  border: 1px solid silver;
+  padding: 8px;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  border-radius: 4px;
+}
+legend {
+  margin: .2em;
+  padding: .2em;
+  font-size: 1.5em;
+}

http://git-wip-us.apache.org/repos/asf/allura/blob/9a20f384/Allura/allura/templates/user_prefs.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/user_prefs.html b/Allura/allura/templates/user_prefs.html
index fec5dcd..6fb2fb1 100644
--- a/Allura/allura/templates/user_prefs.html
+++ b/Allura/allura/templates/user_prefs.html
@@ -180,19 +180,6 @@
 {% block extra_css %}
 {{ super() }}
 <style>
-  fieldset {
-    margin-bottom: 2em;
-    border: 1px solid silver;
-    padding: 8px;
-    -webkit-border-radius: 4px;
-    -moz-border-radius: 4px;
-    border-radius: 4px;
-  }
-  legend {
-    margin: .2em;
-    padding: .2em;
-    font-size: 1.5em;
-  }
   .pad hr {
     margin: 15px 10px;
     width: 860px;


[3/5] git commit: [#7657] ticket:649 Display dates better

Posted by je...@apache.org.
[#7657] ticket:649 Display dates better


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

Branch: refs/heads/je/42cc_7657
Commit: 1657505e4e15a4a927d0727a18b8e4620a43563f
Parents: 9a20f38
Author: Igor Bondarenko <je...@gmail.com>
Authored: Fri Sep 12 11:50:23 2014 +0300
Committer: Igor Bondarenko <je...@gmail.com>
Committed: Fri Sep 12 11:50:23 2014 +0300

----------------------------------------------------------------------
 Allura/allura/model/auth.py                          | 7 +++++--
 Allura/allura/templates/site_admin_user_details.html | 6 +++---
 2 files changed, 8 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/1657505e/Allura/allura/model/auth.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/auth.py b/Allura/allura/model/auth.py
index 48f04f5..f5f9cfb 100644
--- a/Allura/allura/model/auth.py
+++ b/Allura/allura/model/auth.py
@@ -692,8 +692,11 @@ class User(MappedClass, ActivityNode, ActivityObject):
 
     def registration_date(self):
         p = plugin.AuthenticationProvider.get(request)
-        return p.user_registration_date(self)
-
+        d = p.user_registration_date(self)
+        # provider's user_registration_date returns aware datetime (in UTC)
+        # but we're using naive UTC time everywhere
+        d = datetime.utcfromtimestamp(calendar.timegm(d.utctimetuple()))
+        return d
 
 class OldProjectRole(MappedClass):
 

http://git-wip-us.apache.org/repos/asf/allura/blob/1657505e/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
index 155fa20..c4f0965 100644
--- a/Allura/allura/templates/site_admin_user_details.html
+++ b/Allura/allura/templates/site_admin_user_details.html
@@ -30,7 +30,7 @@
         <ul>
           <li>Username: {{ user.username }}</li>
           <li>Full name: {{ user.get_pref('display_name') }}</li>
-          <li>Registered: {{ user.registration_date() }}</li>
+          <li>Registered: {{ user.registration_date() }} ({{ h.ago(user.registration_date()) }})</li>
         </ul>
       </fieldset>
     </div>
@@ -42,13 +42,13 @@
         <legend>Session</legend>
         <h3>Last login</h3>
         <ul>
-          <li>Date: {{ user.last_access.login_date }}</li>
+          <li>Date: {{ user.last_access.login_date }} ({{ h.ago(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>Date: {{ user.last_access.session_date }} ({{ h.ago(user.last_access.session_date) }})</li>
           <li>IP: {{ user.last_access.session_ip }}</li>
           <li>UA: {{ user.last_access.session_ua }}</li>
         </ul>