From a477c5990837233e403c937f9dc9eaca6ecd6aef Mon Sep 17 00:00:00 2001 From: hplattner Date: Tue, 12 May 2015 10:51:11 +0200 Subject: [PATCH] add groupSequence Numbers for resultset rows --- .gitignore | 1 + composer/report/result.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/.gitignore b/.gitignore index 15a2090..898d2c7 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ ajax/dojo/* *.sublime-project *.sublime-workspace .settings +*.ropeproject diff --git a/composer/report/result.py b/composer/report/result.py index 228c9d2..195a4a3 100755 --- a/composer/report/result.py +++ b/composer/report/result.py @@ -35,6 +35,8 @@ class BaseRow(object): self.parent = parent self.data = {} self.sequenceNumber = 0 + self.groupNumbers = dict() + self.groupSequenceNumber = 0 self.cssClass = 'row' def getRawValue(self, attr): @@ -77,6 +79,8 @@ class Row(BaseRow): class GroupHeaderRow(BaseRow): + sourceField = '' + def getRawValue(self, attr): return self.data.get(attr, u'') @@ -129,6 +133,7 @@ class ResultSet(object): for c in columns: if c.output: headerRow.data[c.output] = c.getRawValue(row) + headerRow.sourceField = c.name headerColumn = copy(c) headerColumn.__name__ = c.output headerColumn.cssClass = c.cssClass @@ -227,10 +232,20 @@ class ResultSet(object): start, stop = self.limits result = result[start:stop] number = 0 + groupNumbers = dict() + groupSequenceNumber = 0 for idx, row in enumerate(result): if not isinstance(row, (GroupHeaderRow, SubTotalsRow)): row.sequenceNumber = number + 1 number += 1 + row.groupNumbers = copy(groupNumbers) + row.groupSequenceNumber = copy(groupSequenceNumber) + groupSequenceNumber = groupSequenceNumber + 1 + elif isinstance(row, GroupHeaderRow): + sourceField = row.sourceField + groupNumbers[sourceField] = \ + groupNumbers.get(sourceField, 0) + 1 + groupSequenceNumber = 0 return result @Lazy