Reviewers: ,


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

Affected files:
  M tryton/common/tdp.py


Index: tryton/common/tdp.py
===================================================================
--- a/tryton/common/tdp.py
+++ b/tryton/common/tdp.py
@@ -471,31 +471,24 @@
     value = '>='


-class Equal(Base, InfixMixin):
+class Equal(Comparator):
     value = '='
-    lbp = 60
     fmt = '%s%s%s'

     def domain(self, parent_field=None):
         assert not self.left, 'Unexpected left child %s' % self.left
-        res = []
-        if parent_field is not None:
-            field_name = parent_field['name']
-        else:
-            field_name = 'rec_name'
+        return super(Equal, self).domain(parent_field)

-        if self.right:
-            _, value = self.right.split()
-            if parent_field:
-                value = cast(parent_field, value)
-            res.append((field_name, '=', value))
-        return res

 class Not(Base, InfixMixin):
     value = '!'
     lbp = 60
     fmt = '%s%s%s'

+    def split(self):
+        assert isinstance(self.right, Literal)
+        return self.right.split()
+
     def domain(self, parent_field=None):
         assert not self.left, 'Unexpected left child %s' % self.left
         res = []
@@ -520,26 +513,10 @@
             res.append((field_name, oper, value))
         return res

-class NotEqual(Base, InfixMixin):
+class NotEqual(Equal):
     value = '!='
-    lbp = 60
     fmt = '%s%s%s'

-    def domain(self, parent_field=None):
-        assert not self.left, 'Unexpected left child %s' % self.left
-        res = []
-        if parent_field is not None:
-            field_name = parent_field['name']
-        else:
-            field_name = 'rec_name'
-
-        if self.right:
-            field, value = self.right.split()
-            if parent_field:
-                value = cast(parent_field, value)
-            res.append((field_name, '!=', value))
-        return res
-

 class And(Base, InfixMixin):
     value = 'and'
@@ -1307,6 +1284,10 @@
assert parser.parse('char: foo and (char: bar or boolean: 0').domain() == [
         ('char', 'ilike', 'foo%'),
         ['OR', ('char', 'ilike', 'bar%'), ('boolean', '=', False)]]
+    assert parser.parse('Selection: =Ham Selection: =Spam').domain() == [
+        ('selection', '=', 'ham'), ('selection', '=', 'spam')]
+    assert parser.parse('Selection: !Ham Selection: !Spam').domain() == [
+        ('selection', '!=', 'ham'), ('selection', '!=', 'spam')]

 def test_composite_string():
     parser = test_parser()


--
[email protected] mailing list

Reply via email to