Reviewers: ,


Please review this at http://codereview.tryton.org/35012/

Affected files:
  M trytond/ir/rule.py


Index: trytond/ir/rule.py
===================================================================
--- a/trytond/ir/rule.py
+++ b/trytond/ir/rule.py
@@ -8,6 +8,7 @@
 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 @@
     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 @@
         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,


--
[email protected] mailing list

Reply via email to