Based on a user request. For some searches, ordering by id descending
(approximately "most recent") makes more sense.
---
www/kojiweb/index.py | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/www/kojiweb/index.py b/www/kojiweb/index.py
index 876d956..433d943 100644
--- a/www/kojiweb/index.py
+++ b/www/kojiweb/index.py
@@ -2178,8 +2178,20 @@ _infoURLs = {'package':
'packageinfo?packageID=%(id)i',
_VALID_SEARCH_CHARS = r"""a-zA-Z0-9"""
_VALID_SEARCH_SYMS = r""" @.,_/\()%+-*?|[]^$"""
_VALID_SEARCH_RE = re.compile('^[' + _VALID_SEARCH_CHARS +
re.escape(_VALID_SEARCH_SYMS) + ']+$')
-
-def search(environ, start=None, order='name'):
+_DEFAULT_SEARCH_ORDER = {
+ # For searches against large tables, use '-id' to show most recent first
+ 'build' : '-id',
+ 'rpm' : '-id',
+ 'maven' : '-id',
+ 'win' : '-id',
+ # for other tables, ordering by name makes much more sense
+ 'tag' : 'name',
+ 'target' : 'name',
+ 'package' : 'name',
+ # any type not listed will default to 'name'
+}
+
+def search(environ, start=None, order=None):
values = _initValues(environ, 'Search', 'search')
server = _getServer(environ)
values['error'] = None
@@ -2211,6 +2223,7 @@ def search(environ, start=None, order='name'):
if not infoURL:
raise koji.GenericError, 'unknown search type: %s' % type
values['infoURL'] = infoURL
+ order = order or _DEFAULT_SEARCH_ORDER.get(type, 'name')
values['order'] = order
results = kojiweb.util.paginateMethod(server, values, 'search',
args=(terms, type, match),
--
2.4.3