[IMP] [REVIEW] _auto_join on many2many now raises a NotImplementedError; added a test case for that.

bzr revid: tde@openerp.com-20121206092745-a8t62khs4x37db1g
This commit is contained in:
Thibault Delavallée 2012-12-06 10:27:45 +01:00
parent df4665fcd2
commit a0b8a58174
2 changed files with 11 additions and 3 deletions

View File

@ -126,9 +126,10 @@ class test_expression(common.TransactionCase):
# Get test columns
partner_state_id_col = partner_obj._columns.get('state_id') # many2one on res.partner to res.country.state
partner_parent_id_col = partner_obj._columns.get('parent_id') # many2one on res.partner to res.partner
state_country_id_col = state_obj._columns.get('country_id') # many2one on res.country.state on res.country
partner_child_ids_col = partner_obj._columns.get('child_ids') # one2many on res.partner to res.partner
partner_bank_ids_col = partner_obj._columns.get('bank_ids') # one2many on res.partner to res.partner.bank
state_country_id_col = state_obj._columns.get('country_id') # many2one on res.country.state on res.country
category_id_col = partner_obj._columns.get('category_id') # many2many on res.partner to res.partner.category
# Get the first bank account type to be able to create a res.partner.bank
bank_type = bank_obj._bank_type_get(cr, uid)[0]
@ -146,6 +147,14 @@ class test_expression(common.TransactionCase):
b_ab = bank_obj.create(cr, uid, {'name': '__bank_test_b', 'state': bank_type[0], 'partner_id': p_ab, 'acc_number': '5678'})
b_ba = bank_obj.create(cr, uid, {'name': '__bank_test_b', 'state': bank_type[0], 'partner_id': p_ba, 'acc_number': '9876'})
# ----------------------------------------
# Test1: basics about the attribute
# ----------------------------------------
category_id_col._auto_join = True
self.assertRaises(NotImplementedError, partner_obj.search, cr, uid, [('category_id.name', '=', 'foo')])
category_id_col._auto_join = False
# ----------------------------------------
# Test1: one2many
# ----------------------------------------

View File

@ -800,8 +800,7 @@ class expression(object):
leafs_to_stack.append(self.create_substitution_leaf(leaf, (field_path[1], operator, right), relational_table))
elif len(field_path) > 1 and field._auto_join:
assert False, \
'_auto_join attribute on something else than a many2one or one2many is currently not supported'
raise NotImplementedError('_auto_join attribute not supported on many2many field %s' % (left))
elif len(field_path) > 1 and field._type == 'many2one':
right_ids = relational_table.search(cr, uid, [(field_path[1], operator, right)], context=context)