enable filtering of the users list by first character

This commit is contained in:
Mike Bonnet 2007-04-30 13:52:38 -04:00
parent 993a664315
commit 6566f35deb
3 changed files with 38 additions and 13 deletions

View file

@ -4382,7 +4382,7 @@ class RootExports(object):
else:
clauses.append('build.task_id = %(taskID)i')
if prefix:
clauses.append("package.name ~* ('^' || %(prefix)s || '.*')")
clauses.append("package.name ilike %(prefix)s || '%%'")
if state != None:
clauses.append('build.state = %(state)i')
if completeBefore:
@ -4759,7 +4759,7 @@ class RootExports(object):
dropGroupMember = staticmethod(drop_group_member)
getGroupMembers = staticmethod(get_group_members)
def listUsers(self, userType=koji.USERTYPES['NORMAL'], queryOpts=None):
def listUsers(self, userType=koji.USERTYPES['NORMAL'], prefix=None, queryOpts=None):
"""List all users in the system.
type can be either koji.USERTYPES['NORMAL']
or koji.USERTYPES['HOST']. Returns a list of maps with the
@ -4774,7 +4774,9 @@ class RootExports(object):
If no users of the specified
type exist, return an empty list."""
fields = ('id', 'name', 'status', 'usertype', 'krb_principal')
clauses = ('usertype = %(userType)i',)
clauses = ['usertype = %(userType)i']
if prefix:
clauses.append("name ilike %(prefix)s || '%%'")
query = QueryProcessor(columns=fields, tables=('users',), clauses=clauses,
values=locals(), opts=queryOpts)
return query.execute()

View file

@ -875,15 +875,21 @@ def builds(req, userID=None, tagID=None, state=None, order='-completion_time', s
return _genHTML(req, 'builds.chtml')
def users(req, order='name', start=None):
def users(req, order='name', start=None, prefix=None):
values = _initValues(req, 'Users', 'users')
server = _getServer(req)
if prefix:
prefix = prefix.lower()
values['prefix'] = prefix
values['order'] = order
users = kojiweb.util.paginateMethod(server, values, 'listUsers',
users = kojiweb.util.paginateMethod(server, values, 'listUsers', kw={'prefix': prefix},
start=start, dataName='users', prefix='user', order=order)
values['chars'] = [chr(char) for char in range(48, 58) + range(97, 123)]
return _genHTML(req, 'users.chtml')
def userinfo(req, userID, packageOrder='package_name', packageStart=None, buildOrder='-completion_time', buildStart=None):

View file

@ -4,12 +4,29 @@
<h4>Users</h4>
<table class="data-list">
<tr>
<td class="charlist" colspan="5">
#for $char in $chars
#if $prefix == $char
<strong>$char</strong>
#else
<a href="users?prefix=$char$util.passthrough($self, 'order')">$char</a>
#end if
|
#end for
#if $prefix
<a href="users?${util.passthrough($self, 'order')[1:]}">all</a>
#else
<strong>all</strong>
#end if
</td>
</tr>
<tr>
<td class="paginate" colspan="5">
#if $len($userPages) > 1
<form class="pageJump">
Page:
<select onchange="javascript: window.location = 'users?start=' + this.value * $userRange + '$util.passthrough($self, 'order')';">
<select onchange="javascript: window.location = 'users?start=' + this.value * $userRange + '$util.passthrough($self, 'order', 'prefix')';">
#for $pageNum in $userPages
<option value="$pageNum"#if $pageNum == $userCurrentPage then ' selected' else ''#>#echo $pageNum + 1#</option>
#end for
@ -17,19 +34,19 @@
</form>
#end if
#if $userStart > 0
<a href="users?start=#echo $userStart - $userRange #$util.passthrough($self, 'order')">&lt;&lt;&lt;</a>
<a href="users?start=#echo $userStart - $userRange #$util.passthrough($self, 'order', 'prefix')">&lt;&lt;&lt;</a>
#end if
#if $totalUsers != 0
<strong>Users #echo $userStart + 1 # through #echo $userStart + $userCount # of $totalUsers</strong>
#end if
#if $userStart + $userCount < $totalUsers
<a href="users?start=#echo $userStart + $userRange#$util.passthrough($self, 'order')">&gt;&gt;&gt;</a>
<a href="users?start=#echo $userStart + $userRange#$util.passthrough($self, 'order', 'prefix')">&gt;&gt;&gt;</a>
#end if
</td>
</tr>
<tr class="list-header">
<th><a href="users?order=$util.toggleOrder($self, 'id')">ID</a> $util.sortImage($self, 'id')</th>
<th><a href="users?order=$util.toggleOrder($self, 'name')">Name</a> $util.sortImage($self, 'name')</th>
<th><a href="users?order=$util.toggleOrder($self, 'id')$util.passthrough($self, 'prefix')">ID</a> $util.sortImage($self, 'id')</th>
<th><a href="users?order=$util.toggleOrder($self, 'name')$util.passthrough($self, 'prefix')">Name</a> $util.sortImage($self, 'name')</th>
<th>Packages</th>
<th>Builds</th>
<th>Tasks</th>
@ -54,7 +71,7 @@
#if $len($userPages) > 1
<form class="pageJump">
Page:
<select onchange="javascript: window.location = 'users?start=' + this.value * $userRange + '$util.passthrough($self, 'order')';">
<select onchange="javascript: window.location = 'users?start=' + this.value * $userRange + '$util.passthrough($self, 'order', 'prefix')';">
#for $pageNum in $userPages
<option value="$pageNum"#if $pageNum == $userCurrentPage then ' selected' else ''#>#echo $pageNum + 1#</option>
#end for
@ -62,13 +79,13 @@
</form>
#end if
#if $userStart > 0
<a href="users?start=#echo $userStart - $userRange #$util.passthrough($self, 'order')">&lt;&lt;&lt;</a>
<a href="users?start=#echo $userStart - $userRange #$util.passthrough($self, 'order', 'prefix')">&lt;&lt;&lt;</a>
#end if
#if $totalUsers != 0
<strong>Users #echo $userStart + 1 # through #echo $userStart + $userCount # of $totalUsers</strong>
#end if
#if $userStart + $userCount < $totalUsers
<a href="users?start=#echo $userStart + $userRange#$util.passthrough($self, 'order')">&gt;&gt;&gt;</a>
<a href="users?start=#echo $userStart + $userRange#$util.passthrough($self, 'order', 'prefix')">&gt;&gt;&gt;</a>
#end if
</td>
</tr>