Fix search_rec_name for negative operator

In case of negative operator, each subclause must be composed with 'AND'.

issue4559
review7071002
This commit is contained in:
Cédric Krier committed 2015-04-05 23:34:38 +02:00
1 parent 6d6a68852e
commit 10d896fa77
2 files changed
+17 -13

No files matched your search

+9 -7
View File
@@ -337,13 +337,15 @@ class Translation(ModelSQL, ModelView):
@classmethod
def search_rec_name(cls, name, clause):
clause = tuple(clause)
translations = cls.search(['OR',
('src',) + clause[1:],
('value',) + clause[1:],
])
if translations:
return [('id', 'in', [t.id for t in translations])]
return [(cls._rec_name,) + clause[1:]]
if clause[1].startswith('!') or clause[1].startswith('not '):
bool_op = 'AND'
else:
bool_op = 'OR'
return [bool_op,
('src',) + clause[1:],
('value',) + clause[1:],
(cls._rec_name,) + clause[1:],
]
@classmethod
def search_model(cls, name, clause):
+8 -6
View File
@@ -274,12 +274,14 @@ class User(ModelSQL, ModelView):
@classmethod
def search_rec_name(cls, name, clause):
users = cls.search([
('login', '=', clause[2]),
], order=[])
if len(users) == 1:
return [('id', '=', users[0].id)]
return [(cls._rec_name,) + tuple(clause[1:])]
if clause[1].startswith('!') or clause[1].startswith('not '):
bool_op = 'AND'
else:
bool_op = 'OR'
return [bool_op,
('login',) + tuple(clause[1:]),
(cls._rec_name,) + tuple(clause[1:]),
]
@classmethod
def copy(cls, users, default=None):