From 13da77de0a62552a84ea83d7b6b71f2378fb2f90 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Sat, 21 Mar 2015 17:10:40 +0100 Subject: [PATCH] provide 'descending' flag for sorting --- composer/report/base.py | 1 + composer/report/result.py | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/composer/report/base.py b/composer/report/base.py index e591be2..ede04ea 100644 --- a/composer/report/base.py +++ b/composer/report/base.py @@ -83,6 +83,7 @@ class Report(Template): queryCriteria = None outputFields = () sortCriteria = () + sortDescending = False limits = None diff --git a/composer/report/result.py b/composer/report/result.py index f772532..bf259d4 100644 --- a/composer/report/result.py +++ b/composer/report/result.py @@ -81,12 +81,14 @@ class GroupHeaderRow(BaseRow): class ResultSet(object): def __init__(self, context, data, rowFactory=Row, - sortCriteria=None, queryCriteria=BaseQueryCriteria(), + sortCriteria=None, sortDescending=False, + queryCriteria=BaseQueryCriteria(), limits=None): self.context = context # the report or report instance self.data = data self.rowFactory = rowFactory self.sortCriteria = sortCriteria + self.sortDescending = sortDescending self.queryCriteria = queryCriteria self.limits = limits self.totals = BaseRow(None, self) @@ -95,7 +97,9 @@ class ResultSet(object): result = [self.rowFactory(item, self) for item in self.data] result = [row for row in result if self.queryCriteria.check(row)] if self.sortCriteria: - result.sort(key=lambda x: [f.getSortValue(x) for f in self.sortCriteria]) + result.sort(key=lambda x: + [f.getSortValue(x) for f in self.sortCriteria], + reverse=self.sortDescending) if self.limits: start, stop = self.limits result = result[start:stop]