fix: totals calculation
This commit is contained in:
parent
b5bb5ada15
commit
d2067fd92f
1 changed files with 1 additions and 29 deletions
|
@ -78,27 +78,15 @@ class GroupHeaderRow(BaseRow):
|
|||
return fields
|
||||
|
||||
|
||||
class TotalsRow(BaseRow):
|
||||
|
||||
def getRawValue(self, attr):
|
||||
return self.data.get(attr, u'')
|
||||
|
||||
@Lazy
|
||||
def displayedColumns(self):
|
||||
return self.parent.context.getActiveOutputFields()
|
||||
|
||||
|
||||
class ResultSet(object):
|
||||
|
||||
def __init__(self, context, data, rowFactory=Row, headerRowFactory=GroupHeaderRow,
|
||||
totalsRowFactory=TotalsRow, sortCriteria=None,
|
||||
queryCriteria=BaseQueryCriteria()):
|
||||
sortCriteria=None, queryCriteria=BaseQueryCriteria()):
|
||||
|
||||
self.context = context # the report or report instance
|
||||
self.data = data
|
||||
self.rowFactory = rowFactory
|
||||
self.headerRowFactory = headerRowFactory
|
||||
self.totalsRowFactory = totalsRowFactory
|
||||
self.sortCriteria = sortCriteria
|
||||
self.queryCriteria = queryCriteria
|
||||
self.totals = BaseRow(None, self)
|
||||
|
@ -114,22 +102,11 @@ class ResultSet(object):
|
|||
headerRow.headerColumns.append(headerColumn)
|
||||
return headerRow
|
||||
|
||||
def getTotalsRow(self, result, columns):
|
||||
totalsRow = self.totalsRowFactory(None, self)
|
||||
for c in columns:
|
||||
totalsRow.data[c.name] = 0.00
|
||||
for row in result:
|
||||
for c in columns:
|
||||
totalsRow.data[c.name] = totalsRow.data[c.name] + c.getRawValue(row)
|
||||
return totalsRow
|
||||
|
||||
def getResult(self):
|
||||
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])
|
||||
if self.totalsColumns:
|
||||
self.totals = self.getTotalsRow(result, self.totalsColumns)
|
||||
if self.groupColumns:
|
||||
res = []
|
||||
groupValues = [None for f in self.groupColumns]
|
||||
|
@ -155,8 +132,3 @@ class ResultSet(object):
|
|||
@Lazy
|
||||
def groupColumns(self):
|
||||
return self.context.getGroupFields()
|
||||
|
||||
@Lazy
|
||||
def totalsColumns(self):
|
||||
return self.context.getTotalsFields()
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue