diff --git a/composer/report/base.py b/composer/report/base.py index 46543c4..53fb4f4 100644 --- a/composer/report/base.py +++ b/composer/report/base.py @@ -150,6 +150,9 @@ class Report(Template): result.append([f for f in self.fields if gf.name in f.totals]) return result + def getOutputFieldsForField(self, field): + return [f for f in self.fields if f.name == field.output] + class BaseQueryCriteria(Component): diff --git a/composer/report/result.py b/composer/report/result.py index ca0b139..0bf3901 100644 --- a/composer/report/result.py +++ b/composer/report/result.py @@ -118,12 +118,13 @@ class ResultSet(object): headerRow.headerColumns.append(headerColumn) return headerRow - def getSubTotalsRow(self, row, columns, values, dcolumns): + def getSubTotalsRow(self, idx, 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) + if idx > 1: + for c in dcolumns: + subTotalsRow.data[c.output] = u'SUMME: ' + c.getRawValue(row) return subTotalsRow def getResult(self): @@ -147,11 +148,15 @@ class ResultSet(object): if value != groupValues[idx]: groupValues[idx] = value headerRows.append(self.getHeaderRow(row, (f,) + f.outputWith)) + outputColumns = f.outputWith + if not outputColumns: + outputColumns = self.getOutputColumnsForField(f) subTotalsRows.append( - self.getSubTotalsRow(lastRow, + self.getSubTotalsRow(idx, + lastRow, self.subTotalsColumns[idx], subTotals[idx], - f.outputWith)) + outputColumns)) subTotals[idx] = [0.0 for f in self.subTotalsColumns[idx]] for subTotalsRow in reversed(subTotalsRows): res.append(subTotalsRow) @@ -194,3 +199,6 @@ class ResultSet(object): def subTotalsColumns(self): return self.context.getSubTotalsFields() + def getOutputColumnsForField(self, f): + return self.context.getOutputFieldsForField(f) +