Support multiple sort options

For dashboards and the change list.

Change-Id: I47236f346d6fa3debd334ccfbfd3da9aea1f3db4
This commit is contained in:
James E. Blair 2016-11-29 11:01:49 -08:00
parent 7016d319e7
commit fca4d23465
2 changed files with 11 additions and 7 deletions

View File

@ -54,7 +54,8 @@ class ConfigSchema(object):
servers = [server]
sort_by = v.Any('number', 'updated', 'last-seen')
_sort_by = v.Any('number', 'updated', 'last-seen')
sort_by = v.Any(_sort_by, [_sort_by])
text_replacement = {'text': v.Any(str,
{'color': str,

View File

@ -881,14 +881,17 @@ class DatabaseSession(object):
def getChanges(self, query, unreviewed=False, sort_by='number'):
self.database.log.debug("Search query: %s sort: %s" % (query, sort_by))
q = self.session().query(Change).filter(self.search.parse(query))
if not isinstance(sort_by, (list, tuple)):
sort_by = [sort_by]
if unreviewed:
q = q.filter(change_table.c.hidden==False, change_table.c.reviewed==False)
if sort_by == 'updated':
q = q.order_by(change_table.c.updated)
elif sort_by == 'last-seen':
q = q.order_by(change_table.c.last_seen)
else:
q = q.order_by(change_table.c.number)
for s in sort_by:
if s == 'updated':
q = q.order_by(change_table.c.updated)
elif s == 'last-seen':
q = q.order_by(change_table.c.last_seen)
elif s == 'number':
q = q.order_by(change_table.c.number)
self.database.log.debug("Search SQL: %s" % q)
try:
return q.all()