fix method names to listPackagesSimple and countAndFilterResults.
1. replace listPackages call by listPackagesSimple.
2. replace filterResults by countAndFilterResults.
This commit is contained in:
parent
fe32d1a447
commit
fe8c5964ca
4 changed files with 24 additions and 39 deletions
10
cli/koji
10
cli/koji
|
|
@ -3226,7 +3226,10 @@ def anon_handle_list_pkgs(options, session, args):
|
|||
opts['event'] = event['id']
|
||||
event['timestr'] = time.asctime(time.localtime(event['ts']))
|
||||
print "Querying at event %(id)i (%(timestr)s)" % event
|
||||
data = session.listPackages(**opts)
|
||||
if 'tagID' in opts or 'pkgID' in opts or 'userID' in opts:
|
||||
data = session.listPackages(**opts)
|
||||
else:
|
||||
data = session.listPackagesSimple(**opts)
|
||||
if not data:
|
||||
print "(no matching packages)"
|
||||
return 1
|
||||
|
|
@ -6266,7 +6269,10 @@ def handle_set_pkg_owner_global(options, session, args):
|
|||
continue
|
||||
to_change.extend(entries)
|
||||
if not packages and options.old_user:
|
||||
entries = session.listPackages(**opts)
|
||||
if 'tagID' in opts or 'pkgID' in opts or 'userID' in opts:
|
||||
entries = session.listPackages(**opts)
|
||||
else:
|
||||
entries = session.listPackagesSimple(**opts)
|
||||
if not entries:
|
||||
print "No data for user %s" % old_user['name']
|
||||
return 1
|
||||
|
|
|
|||
|
|
@ -9861,7 +9861,7 @@ class RootExports(object):
|
|||
return results
|
||||
|
||||
|
||||
def listFlatPackages(self, prefix=None, queryOpts=None):
|
||||
def listPackagesSimple(self, prefix=None, queryOpts=None):
|
||||
"""list packages that starts with prefix and are filted
|
||||
and ordered by queryOpts.
|
||||
|
||||
|
|
@ -9875,16 +9875,18 @@ class RootExports(object):
|
|||
'package_name' and 'package_id'.
|
||||
"""
|
||||
_escape = lambda _str: _str.replace('_', '#_').replace('%', '#%')
|
||||
|
||||
fields = (('package.id', 'package_id'),
|
||||
('package.name', 'package_name'))
|
||||
if prefix is None:
|
||||
clauses = None
|
||||
else:
|
||||
clauses = ["""package.name ILIKE '%s%%' ESCAPE '#'"""
|
||||
% _escape(prefix)]
|
||||
prefix = _escape(prefix)
|
||||
clauses = ["""package.name ILIKE '%(prefix)s%%' ESCAPE '#'"""]
|
||||
query = QueryProcessor(
|
||||
tables=['package'], clauses=clauses,
|
||||
columns=['package.id', 'package.name'], opts=queryOpts)
|
||||
return query.executeOne()
|
||||
tables=['package'], clauses=clauses, values=locals(),
|
||||
columns=[f[0] for f in fields], aliases=[f[1] for f in fields],
|
||||
opts=queryOpts)
|
||||
return query.execute()
|
||||
|
||||
|
||||
def checkTagPackage(self,tag,pkg):
|
||||
|
|
@ -10562,31 +10564,11 @@ class RootExports(object):
|
|||
NULL higher than all other values; default to True for consistency
|
||||
with database sorts
|
||||
"""
|
||||
filterOpts = kw.pop('filterOpts', {})
|
||||
|
||||
results = getattr(self, methodName)(*args, **kw)
|
||||
if results is None:
|
||||
return None
|
||||
elif not isinstance(results, list):
|
||||
raise TypeError, '%s() did not return a list' % methodName
|
||||
|
||||
order = filterOpts.get('order')
|
||||
if order:
|
||||
results.sort(self._sortByKeyFunc(order, filterOpts.get('noneGreatest', True)))
|
||||
|
||||
offset = filterOpts.get('offset')
|
||||
if offset is not None:
|
||||
results = results[offset:]
|
||||
limit = filterOpts.get('limit')
|
||||
if limit is not None:
|
||||
results = results[:limit]
|
||||
|
||||
return results
|
||||
return self.countAndFilterResults(methodName, *args, **kw)[1]
|
||||
|
||||
|
||||
def CountAndFilterResults(self, methodName, *args, **kw):
|
||||
""" Replacement of the method filterResults when we need both the total
|
||||
result count and the filtered result.
|
||||
def countAndFilterResults(self, methodName, *args, **kw):
|
||||
"""Filter results by a given name and count total result account.
|
||||
|
||||
Execute the XML-RPC method with the given name and filter the results
|
||||
based on the options specified in the keywork option "filterOpts".
|
||||
|
|
|
|||
|
|
@ -352,8 +352,7 @@ def notificationedit(environ, notificationID):
|
|||
values = _initValues(environ, 'Edit Notification')
|
||||
|
||||
values['notif'] = notification
|
||||
packages = server.listPackages()
|
||||
packages.sort(kojiweb.util.sortByKeyFunc('package_name'))
|
||||
packages = server.listPackagesSimple(queryOpts={'order': 'package_name'})
|
||||
values['packages'] = packages
|
||||
tags = server.listTags(queryOpts={'order': 'name'})
|
||||
values['tags'] = tags
|
||||
|
|
@ -397,8 +396,7 @@ def notificationcreate(environ):
|
|||
values = _initValues(environ, 'Edit Notification')
|
||||
|
||||
values['notif'] = None
|
||||
packages = server.listPackages()
|
||||
packages.sort(kojiweb.util.sortByKeyFunc('package_name'))
|
||||
packages = server.listPackagesSimple(queryOpts={'order': 'package_name'})
|
||||
values['packages'] = packages
|
||||
tags = server.listTags(queryOpts={'order': 'name'})
|
||||
values['tags'] = tags
|
||||
|
|
|
|||
|
|
@ -331,12 +331,11 @@ def paginateResults(server, values, methodName, args=None, kw=None,
|
|||
if not dataName:
|
||||
raise StandardError, 'dataName must be specified'
|
||||
|
||||
totalRows = server.count(methodName, *args, **kw)
|
||||
|
||||
kw['filterOpts'] = {'order': order,
|
||||
'offset': start,
|
||||
'limit': pageSize}
|
||||
data = server.filterResults(methodName, *args, **kw)
|
||||
|
||||
totalRows, data = server.countAndFilterResults(methodName, *args, **kw)
|
||||
count = len(data)
|
||||
|
||||
_populateValues(values, dataName, prefix, data, totalRows, start, count, pageSize, order)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue