From 7fafd9dccdaef00ecdc0cf46addc54898200bf73 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Tue, 5 Jun 2012 10:51:16 +0200 Subject: [PATCH] extend row stuff: group fields, 'useRowProperty' attribute handler --- composer/report/result.py | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/composer/report/result.py b/composer/report/result.py index 1bad061..2d3943f 100644 --- a/composer/report/result.py +++ b/composer/report/result.py @@ -20,13 +20,13 @@ Report result sets and related classes. """ +from copy import copy from zope.cachedescriptors.property import Lazy from cybertools.composer.interfaces import IInstance from cybertools.composer.report.base import BaseQueryCriteria - class BaseRow(object): def __init__(self, context, parent): @@ -35,10 +35,6 @@ class BaseRow(object): self.data = {} self.sequenceNumber = 0 - def xx__getattr__(self, attr): - f = self.parent.context.fields[attr] - return f.getValue(self) - def getRawValue(self, attr): return self.data.get(attr) @@ -54,6 +50,32 @@ class Row(BaseRow): def getContextAttr(obj, attr): return getattr(obj.context, attr) + def getGroupFields(self): + return [self.getRawValue(f.name) for f in + self.parent.context.fields if 'group' in f.executionSteps] + + @Lazy + def displayedColumns(self): + return self.parent.context.getActiveOutputFields() + + def useRowProperty(self, attr): + return getattr(self, attr) + + +class GroupHeaderRow(BaseRow): + + def getRawValue(self, attr): + return self.data.get(attr, u'') + + @Lazy + def displayedColumns(self): + fields = self.parent.context.getActiveOutputFields() + for col in self.headerColumns: + for idx, f in enumerate(fields): + if f.name == col.name: + fields[idx] = col + return fields + class ResultSet(object):