diff --git a/composer/report/base.py b/composer/report/base.py index 717d0db..227e023 100644 --- a/composer/report/base.py +++ b/composer/report/base.py @@ -82,6 +82,7 @@ class Report(Template): queryCriteria = None outputFields = () sortCriteria = () + limits = None def __init__(self, name): diff --git a/composer/report/result.py b/composer/report/result.py index d74bf46..b29e8e9 100644 --- a/composer/report/result.py +++ b/composer/report/result.py @@ -79,15 +79,17 @@ class GroupHeaderRow(BaseRow): class ResultSet(object): - def __init__(self, context, data, rowFactory=Row, headerRowFactory=GroupHeaderRow, - sortCriteria=None, queryCriteria=BaseQueryCriteria()): - + def __init__(self, context, data, + rowFactory=Row, headerRowFactory=GroupHeaderRow, + sortCriteria=None, queryCriteria=BaseQueryCriteria(), + limits=None): self.context = context # the report or report instance self.data = data self.rowFactory = rowFactory self.headerRowFactory = headerRowFactory self.sortCriteria = sortCriteria self.queryCriteria = queryCriteria + self.limits = limits self.totals = BaseRow(None, self) def getHeaderRow(self, row, columns): @@ -106,7 +108,8 @@ 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]) if self.groupColumns: res = [] groupValues = [None for f in self.groupColumns] @@ -118,6 +121,9 @@ class ResultSet(object): res.append(self.getHeaderRow(row, (f,) + f.outputWith)) res.append(row) result = res + if self.limits: + start, stop = self.limits + result = result[start:stop] for idx, row in enumerate(result): row.sequenceNumber = idx + 1 return result