Skip to content

Commit

Permalink
[MERGE] Forward-port 7.0 up to 4de3f4c
Browse files Browse the repository at this point in the history
  • Loading branch information
odony committed Feb 5, 2016
2 parents d036e3b + 4de3f4c commit bc26a49
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 0 deletions.
8 changes: 8 additions & 0 deletions openerp/addons/base/tests/test_osv_expression.yml
Original file line number Diff line number Diff line change
Expand Up @@ -423,11 +423,19 @@
u1b = res_users.create(cr, uid, {'login': 'dbo2', 'partner_id': p1})
u2 = res_users.create(cr, uid, {'login': 'rpo', 'partner_id': p2})
assert [p1] == res_partner.search(cr, uid, [('user_ids', 'in', u1a)]), "o2m IN accept single int on right side"
assert [p1] == res_partner.search(cr, uid, [('user_ids', '=', 'Dédé Boitaclou')]), "o2m NOT IN matches none on the right side"
assert [] == res_partner.search(cr, uid, [('user_ids', 'in', [10000])]), "o2m NOT IN matches none on the right side"
assert [p1,p2] == res_partner.search(cr, uid, [('user_ids', 'in', [u1a,u2])]), "o2m IN matches any on the right side"
all_partners = res_partner.search(cr, uid, [])
assert (set(all_partners) - set([p1])) == set(res_partner.search(cr, uid, [('user_ids', 'not in', u1a)])), "o2m NOT IN matches none on the right side"
# For 9.0: assert (set(all_partners) - set([p1])) == set(res_partner.search(cr, uid, [('user_ids', '!=', 'Dédé Boitaclou')])), "o2m NOT IN matches none on the right side"
assert (set(all_partners) - set([p1,p2])) == set(res_partner.search(cr, uid, [('user_ids', 'not in', [u1b, u2])])), "o2m NOT IN matches none on the right side"






# child_of x returns x and its children (direct or not).
company = self.browse(cr, uid, ref('ymltest_company3'))
expected = [ref('ymltest_company3'), ref('ymltest_company4')]
Expand Down
4 changes: 4 additions & 0 deletions openerp/osv/expression.py
Original file line number Diff line number Diff line change
Expand Up @@ -974,6 +974,10 @@ def push_result(leaf):
call_null = False
o2m_op = 'not in' if operator in NEGATIVE_TERM_OPERATORS else 'in'
push(create_substitution_leaf(leaf, ('id', o2m_op, ids1), model))
elif operator in ('like', 'ilike', 'in', '='):
# no match found with positive search operator => no result (FALSE_LEAF)
call_null = False
push(create_substitution_leaf(leaf, FALSE_LEAF, model))

if call_null:
o2m_op = 'in' if operator in NEGATIVE_TERM_OPERATORS else 'not in'
Expand Down

0 comments on commit bc26a49

Please sign in to comment.