Use all operators in ir.rule operator for issue2029

This commit is contained in:
Cédric Krier committed 2011-05-31 10:54:53 +02:00
1 parent 175fb9cd0f
commit 1b4946a763
1 file changed
+14 -12
+14 -12
View File
@@ -8,6 +8,7 @@ from trytond.tools import safe_eval
from trytond.pyson import Eval, Get
from trytond.transaction import Transaction
from trytond.cache import Cache
from trytond.const import OPERATORS
class RuleGroup(ModelSQL, ModelView):
@@ -90,18 +91,22 @@ class Rule(ModelSQL, ModelView):
field = fields.Many2One('ir.model.field', 'Field',
domain=[('model', '=', Get(Eval('_parent_rule_group', {}), 'model'))],
select=1, required=True)
operator = fields.Selection([
('=', '='),
('<>', '<>'),
('<=', '<='),
('>=', '>='),
('in', 'in'),
('child_of', 'child_of'),
], 'Operator', required=True, translate=False)
operator = fields.Selection([(x, x) for x in OPERATORS], 'Operator',
required=True, translate=False)
operand = fields.Selection('get_operand','Operand', required=True)
rule_group = fields.Many2One('ir.rule.group', 'Group', select=2,
required=True, ondelete="CASCADE")
def init(self, module_name):
cursor = Transaction().cursor
# Migration from 2.0: rename operator '<>' into '!='
cursor.execute('UPDATE "%s" '
'SET operator = %%s '
'WHERE operator = %%s' % self._table, ('!=', '<>'))
super(Rule, self).init(module_name)
def _operand_get(self, obj_name='', level=3, recur=None, root_tech='', root=''):
res = {}
if not obj_name:
@@ -191,11 +196,8 @@ class Rule(ModelSQL, ModelView):
with contextlib.nested(Transaction().set_user(0),
Transaction().set_context(user=0)):
for rule in self.browse(ids):
operator = rule.operator
if operator == '<>':
operator = '!='
dom = safe_eval("[('%s', '%s', %s)]" % \
(rule.field.name, operator,
(rule.field.name, rule.operator,
operand2query[rule.operand]), {
'user': self.pool.get('res.user').browse(user),
'time': time,