diff --git a/composer/report/base.py b/composer/report/base.py index 31660f4..5b63a09 100644 --- a/composer/report/base.py +++ b/composer/report/base.py @@ -138,28 +138,28 @@ class Report(Template): def getPresentationFormats(self): return [dict(renderer='default', title='Default')] - + def getGroupFields(self): return [f for f in self.fields if 'group' in f.executionSteps] - + def getTotalsFields(self): return [f for f in self.fields if 'totals' in f.executionSteps] - + def getSubTotalsFields(self): result = [] for gf in self.getGroupFields(): result.append([f for f in self.fields if gf.name in f.totals]) return result - + def getSubTotalsGroupFields(self): result = [] for f in self.fields: result.extend(gf for gf in self.getGroupFields() 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 7558edc..5d90906 100755 --- a/composer/report/result.py +++ b/composer/report/result.py @@ -83,8 +83,8 @@ class GroupHeaderRow(BaseRow): if f.name == col.name: fields[idx] = col return fields - - + + class SubTotalsRow(BaseRow): def getRawValue(self, attr): @@ -141,12 +141,12 @@ class ResultSet(object): v = u'' subTotalsRow.data[gf.totalsDescription.output] = u'SUMME: ' + v return subTotalsRow - + 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: + result.sort(key=lambda x: [f.getSortValue(x) for f in self.sortCriteria]) if self.groupColumns: res = [] @@ -177,7 +177,8 @@ class ResultSet(object): res.append(row) for idx, sc in enumerate(self.subTotalsColumns): for idx2, f in enumerate(sc): - subTotals[idx][idx2] += f.getValue(row) + subTotals[idx][idx2] += f.getValue(row, + ignoreTotals=True) lastRow = row if lastRow is not None: subTotalsRows = [] @@ -219,16 +220,16 @@ class ResultSet(object): @Lazy def groupColumns(self): return self.context.getGroupFields() - + @Lazy def subTotalsColumns(self): return self.context.getSubTotalsFields() - + @Lazy def subTotalsGroupColumns(self): return self.context.getSubTotalsGroupFields() - - + + def getOutputColumnsForField(self, f): return self.context.getOutputFieldsForField(f) - +