diff --git a/fas/fas/templates/user/list.html b/fas/fas/templates/user/list.html index c21f7ff..1b46b8c 100644 --- a/fas/fas/templates/user/list.html +++ b/fas/fas/templates/user/list.html @@ -28,11 +28,11 @@ - - ${user} + + ${person.username} - ${_('CLA Done')} - ${_('CLA Not Done')} + ${_('CLA Done')} + ${_('CLA Not Done')} diff --git a/fas/fas/user.py b/fas/fas/user.py index bac12a9..fcebf9b 100644 --- a/fas/fas/user.py +++ b/fas/fas/user.py @@ -1,6 +1,7 @@ import turbogears from turbogears import controllers, expose, paginate, identity, redirect, widgets, validate, validators, error_handler from turbogears.database import session +import cherrypy import ldap @@ -135,6 +136,11 @@ class User(controllers.Controller): ''' turbogears.redirect('/user/view/%s' % turbogears.identity.current.user_name) + def jsonRequest(self): + return 'tg_format' in cherrypy.request.params and \ + cherrypy.request.params['tg_format'] == 'json' + + @expose(template="fas.templates.error") def error(self, tg_errors=None): '''Show a friendly error message''' @@ -222,17 +228,19 @@ class User(controllers.Controller): return dict(target=target) @identity.require(turbogears.identity.in_group("accounts")) #TODO: Use auth.py - @expose(template="fas.templates.user.list") + @expose(template="fas.templates.user.list", allow_json=True) def list(self, search="a*"): '''List users ''' - people = People.query.filter(People.username.like('%%%s%%' % username)) - try: - people[0] - except: - turbogears.flash(_("No users found matching '%s'") % search) - people = [] - return dict(users=users, search=search) + re_search = re.sub(r'\*', r'%', search).lower() + people = People.query.filter(People.username.like(re_search)).order_by('username') + if people.count() < 0: + turbogears.flash(_("No Users found matching '%s'") % search) + if self.jsonRequest(): + return ({'users': users}) + cla_done_group = Groups.by_name('cla_done') + + return dict(people=people, search=search, cla_done_group=cla_done_group) @expose(template='fas.templates.user.new') def new(self):