provide operator selection for query criteria
git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@3922 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
3597866999
commit
828e46a447
2 changed files with 15 additions and 5 deletions
|
@ -22,6 +22,7 @@ Basic classes for report management.
|
||||||
$Id$
|
$Id$
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import operator
|
||||||
from zope.interface import implements
|
from zope.interface import implements
|
||||||
|
|
||||||
from cybertools.composer.base import Component, Element, Compound
|
from cybertools.composer.base import Component, Element, Compound
|
||||||
|
@ -147,12 +148,15 @@ class LeafQueryCriteria(BaseQueryCriteria, Element):
|
||||||
def check(self, row):
|
def check(self, row):
|
||||||
if not self.comparisonValue:
|
if not self.comparisonValue:
|
||||||
return True
|
return True
|
||||||
#value = getattr(row, self.name, None)
|
|
||||||
value = self.field.getSelectValue(row)
|
value = self.field.getSelectValue(row)
|
||||||
#print '***', self.name, self.operator, self.comparisonValue, value
|
if self.operator == 'in':
|
||||||
#if value is not None:
|
return value in self.comparisonValue
|
||||||
return value in self.comparisonValue
|
op = getattr(operator, self.operator, None)
|
||||||
#return True
|
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):
|
class CompoundQueryCriteria(BaseQueryCriteria, Compound):
|
||||||
|
|
|
@ -47,6 +47,12 @@ class Field(Component):
|
||||||
|
|
||||||
executionSteps = ['query', 'sort', 'output']
|
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):
|
def __init__(self, name, title=None, fieldType='textline', **kw):
|
||||||
assert name
|
assert name
|
||||||
self.__name__ = name
|
self.__name__ = name
|
||||||
|
|
Loading…
Add table
Reference in a new issue