add: subTotalsRow Description support

This commit is contained in:
hplattner 2012-07-02 16:42:11 +02:00
parent 0efbc5db1b
commit c50aff0098
2 changed files with 21 additions and 5 deletions

View file

@ -106,6 +106,9 @@ class Report(Template):
def getOutputFields(self):
return [f for f in self.fields if 'output' in f.executionSteps]
def getAllFields(self):
return [f for f in self.fields]
def getActiveOutputFields(self):
if not self.outputFields:
fieldNames = [f.name for f in self.getOutputFields()]
@ -146,7 +149,7 @@ class Report(Template):
for gf in self.getGroupFields():
result.append([f for f in self.fields if gf.name in f.totals])
return result
class BaseQueryCriteria(Component):

View file

@ -57,6 +57,10 @@ class Row(BaseRow):
@Lazy
def displayedColumns(self):
return self.parent.context.getActiveOutputFields()
@Lazy
def allColumns(self):
return self.partent.context.getAllFields()
def useRowProperty(self, attr):
return getattr(self, attr)
@ -114,10 +118,12 @@ class ResultSet(object):
headerRow.headerColumns.append(headerColumn)
return headerRow
def getSubTotalsRow(self, row, columns, values):
def getSubTotalsRow(self, row, columns, values, dcolumns):
subTotalsRow = SubTotalsRow(None, self)
for idx, c in enumerate(columns):
subTotalsRow.data[c.name] = values[idx]
for c in dcolumns:
subTotalsRow.data[c.output] = u'SUMME: ' + c.getRawValue(row)
return subTotalsRow
def getResult(self):
@ -130,7 +136,10 @@ class ResultSet(object):
res = []
groupValues = [None for f in self.groupColumns]
subTotals = [[0.0 for f in stc] for stc in self.subTotalsColumns]
lastRow = None
for row in result:
if lastRow is None:
lastRow = row
subTotalsRows = []
headerRows = []
for idx, f in enumerate(self.groupColumns):
@ -138,8 +147,11 @@ class ResultSet(object):
if value != groupValues[idx]:
groupValues[idx] = value
headerRows.append(self.getHeaderRow(row, (f,) + f.outputWith))
subTotalsRows.append(self.getSubTotalsRow(
row, self.subTotalsColumns[idx], subTotals[idx]))
subTotalsRows.append(
self.getSubTotalsRow(lastRow,
self.subTotalsColumns[idx],
subTotals[idx],
f.outputWith))
subTotals[idx] = [0.0 for f in self.subTotalsColumns[idx]]
for subTotalsRow in reversed(subTotalsRows):
res.append(subTotalsRow)
@ -149,6 +161,7 @@ class ResultSet(object):
for idx, sc in enumerate(self.subTotalsColumns):
for idx2, f in enumerate(sc):
subTotals[idx][idx2] += f.getValue(row)
lastRow = row
result = res
if self.limits:
start, stop = self.limits
@ -180,4 +193,4 @@ class ResultSet(object):
@Lazy
def subTotalsColumns(self):
return self.context.getSubTotalsFields()