Mercurial > public > src > rhodecode
changeset 2801:4eef5eeb81a3 beta
fixed sorting by last_login in users admin page
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Tue, 07 Aug 2012 23:02:50 +0200 |
parents | 4debfe3b50be |
children | 48fad3a6e2f8 |
files | rhodecode/controllers/admin/users.py rhodecode/lib/utils2.py rhodecode/public/js/rhodecode.js rhodecode/templates/admin/users/users.html |
diffstat | 4 files changed, 22 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/rhodecode/controllers/admin/users.py Tue Aug 07 22:10:44 2012 +0200 +++ b/rhodecode/controllers/admin/users.py Tue Aug 07 23:02:50 2012 +0200 @@ -47,6 +47,7 @@ from rhodecode.model.meta import Session from rhodecode.lib.utils import action_logger from rhodecode.lib.compat import json +from rhodecode.lib.utils2 import datetime_to_time log = logging.getLogger(__name__) @@ -89,6 +90,7 @@ .render(user_id, username, _=_, h=h, c=c)) for user in c.users_list: + users_data.append({ "gravatar": grav_tmpl(user. email, 24), "raw_username": user.username, @@ -96,6 +98,7 @@ "firstname": user.name, "lastname": user.lastname, "last_login": h.fmt_date(user.last_login), + "last_login_raw": datetime_to_time(user.last_login), "active": h.bool2icon(user.active), "admin": h.bool2icon(user.admin), "ldap": h.bool2icon(bool(user.ldap_dn)),
--- a/rhodecode/lib/utils2.py Tue Aug 07 22:10:44 2012 +0200 +++ b/rhodecode/lib/utils2.py Tue Aug 07 23:02:50 2012 +0200 @@ -24,6 +24,7 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. import re +import time from datetime import datetime from pylons.i18n.translation import _, ungettext from rhodecode.lib.vcs.utils.lazy import LazyProperty @@ -429,6 +430,11 @@ return cs +def datetime_to_time(dt): + if dt: + return time.mktime(dt.timetuple()) + + MENTIONS_REGEX = r'(?:^@|\s@)([a-zA-Z0-9]{1}[a-zA-Z0-9\-\_\.]+)(?:\s{1})' @@ -444,6 +450,7 @@ return sorted(list(usrs), key=lambda k: k.lower()) + class AttributeDict(dict): def __getattr__(self, attr): return self.get(attr, None)
--- a/rhodecode/public/js/rhodecode.js Tue Aug 07 22:10:44 2012 +0200 +++ b/rhodecode/public/js/rhodecode.js Tue Aug 07 23:02:50 2012 +0200 @@ -1529,6 +1529,15 @@ return compState; }; +var lastLoginSort = function(a, b, desc, field) { + var a_ = a.getData('last_login_raw') || 0; + var b_ = b.getData('last_login_raw') || 0; + + var comp = YAHOO.util.Sort.compare; + var compState = comp(a_, b_, desc); + return compState; +}; + var nameSort = function(a, b, desc, field) { var a_ = fromHTML(a.getData(field)); var b_ = fromHTML(b.getData(field));
--- a/rhodecode/templates/admin/users/users.html Tue Aug 07 22:10:44 2012 +0200 +++ b/rhodecode/templates/admin/users/users.html Tue Aug 07 23:02:50 2012 +0200 @@ -44,6 +44,7 @@ {key: "firstname"}, {key: "lastname"}, {key: "last_login"}, + {key: "last_login_raw"}, {key: "active"}, {key: "admin"}, {key: "ldap"}, @@ -78,7 +79,8 @@ }, {key:"firstname",label:"${_('firstname')}",sortable:true,}, {key:"lastname",label:"${_('lastname')}",sortable:true,}, - {key:"last_login",label:"${_('last login')}",sortable:true,}, + {key:"last_login",label:"${_('last login')}",sortable:true, + sortOptions: { sortFunction: lastLoginSort }}, {key:"active",label:"${_('active')}",sortable:true,}, {key:"admin",label:"${_('admin')}",sortable:true,}, {key:"ldap",label:"${_('ldap')}",sortable:true,},