From 828e46a4476bc740485d7730a0b223c15c63eb57 Mon Sep 17 00:00:00 2001 From: helmutm Date: Sat, 17 Jul 2010 08:34:46 +0000 Subject: [PATCH] provide operator selection for query criteria git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@3922 fd906abe-77d9-0310-91a1-e0d9ade77398 --- composer/report/base.py | 14 +++++++++----- composer/report/field.py | 6 ++++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/composer/report/base.py b/composer/report/base.py index 8b33e5e..f541c13 100644 --- a/composer/report/base.py +++ b/composer/report/base.py @@ -22,6 +22,7 @@ Basic classes for report management. $Id$ """ +import operator from zope.interface import implements from cybertools.composer.base import Component, Element, Compound @@ -147,12 +148,15 @@ class LeafQueryCriteria(BaseQueryCriteria, Element): def check(self, row): if not self.comparisonValue: return True - #value = getattr(row, self.name, None) value = self.field.getSelectValue(row) - #print '***', self.name, self.operator, self.comparisonValue, value - #if value is not None: - return value in self.comparisonValue - #return True + if self.operator == 'in': + return value in self.comparisonValue + op = getattr(operator, self.operator, None) + if op is None: + # TODO: log warning + return True + #print '***', self.field.name, value, op, self.comparisonValue + return op(value, self.comparisonValue) class CompoundQueryCriteria(BaseQueryCriteria, Compound): diff --git a/composer/report/field.py b/composer/report/field.py index 51da6f0..95c5b58 100644 --- a/composer/report/field.py +++ b/composer/report/field.py @@ -47,6 +47,12 @@ class Field(Component): executionSteps = ['query', 'sort', 'output'] + operators = [{'token': 'eq', 'label': '=='}, + {'token': 'lt', 'label': '<'}, + {'token': 'le', 'label': '<='}, + {'token': 'gt', 'label': '>'}, + {'token': 'ge', 'label': '>='},] + def __init__(self, name, title=None, fieldType='textline', **kw): assert name self.__name__ = name