merge branch master - 'limits' parameter for reports
This commit is contained in:
commit
ff9a2a8fd3
2 changed files with 11 additions and 4 deletions
|
@ -82,6 +82,7 @@ class Report(Template):
|
|||
queryCriteria = None
|
||||
outputFields = ()
|
||||
sortCriteria = ()
|
||||
limits = None
|
||||
|
||||
|
||||
def __init__(self, name):
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue