diff --git a/gertty/config.py b/gertty/config.py index cf38b11..59aae1d 100644 --- a/gertty/config.py +++ b/gertty/config.py @@ -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, diff --git a/gertty/db.py b/gertty/db.py index ad25ecb..e4f43de 100644 --- a/gertty/db.py +++ b/gertty/db.py @@ -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()