diff --git a/openerp/addons/base/tests/test_expression.py b/openerp/addons/base/tests/test_expression.py index 2bfd8ade1c9..a8b69ac8c06 100644 --- a/openerp/addons/base/tests/test_expression.py +++ b/openerp/addons/base/tests/test_expression.py @@ -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 # ---------------------------------------- diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index c4c7f4400ea..383e70dccfa 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -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)