diff --git a/openerp/addons/test_inherits/__init__.py b/openerp/addons/test_inherits/__init__.py new file mode 100644 index 00000000000..a0fdc10fe11 --- /dev/null +++ b/openerp/addons/test_inherits/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import models diff --git a/openerp/addons/test_inherits/__openerp__.py b/openerp/addons/test_inherits/__openerp__.py new file mode 100644 index 00000000000..21010738f8e --- /dev/null +++ b/openerp/addons/test_inherits/__openerp__.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +{ + 'name': 'test-inherits', + 'version': '0.1', + 'category': 'Tests', + 'description': """A module to verify the inheritance using _inherits.""", + 'author': 'Camptocamp', + 'website': 'http://www.camptocamp.com', + 'depends': ['base'], + 'data': [ + 'ir.model.access.csv', + 'demo_data.xml', + ], + 'installable': True, + 'auto_install': False, +} diff --git a/openerp/addons/test_inherits/demo_data.xml b/openerp/addons/test_inherits/demo_data.xml new file mode 100644 index 00000000000..98b19095acd --- /dev/null +++ b/openerp/addons/test_inherits/demo_data.xml @@ -0,0 +1,19 @@ + + + + Unit A + a + + + + + A + + + + + A + + + + diff --git a/openerp/addons/test_inherits/ir.model.access.csv b/openerp/addons/test_inherits/ir.model.access.csv new file mode 100644 index 00000000000..22ecf366e31 --- /dev/null +++ b/openerp/addons/test_inherits/ir.model.access.csv @@ -0,0 +1,4 @@ +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" +access_test_unit,access_test_unit,model_test_unit,,1,1,1,1 +access_test_box,access_test_box,model_test_box,,1,1,1,1 +access_test_pallet,access_test_pallet,model_test_pallet,,1,1,1,1 diff --git a/openerp/addons/test_inherits/models.py b/openerp/addons/test_inherits/models.py new file mode 100644 index 00000000000..c8f86ec52d7 --- /dev/null +++ b/openerp/addons/test_inherits/models.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +from openerp import models, fields, api, osv + + +# We just create a new model +class Unit(models.Model): + _name = 'test.unit' + + _columns = { + 'name': osv.fields.char('Name', required=True), + 'state': osv.fields.selection([('a', 'A'), ('b', 'B')], + string='State'), + } + + surname = fields.Char(compute='_compute_surname') + + @api.one + @api.depends('name') + def _compute_surname(self): + self.surname = self.name or '' + + +# We want to _inherits from the parent model and we add some fields +# in the child object +class Box(models.Model): + _name = 'test.box' + _inherits = {'test.unit': 'unit_id'} + + unit_id = fields.Many2one('test.unit', 'Unit', required=True, + ondelete='cascade') + field_in_box = fields.Char('Field1') + + +# We add a third level of _inherits +class Pallet(models.Model): + _name = 'test.pallet' + _inherits = {'test.box': 'box_id'} + + box_id = fields.Many2one('test.box', 'Box', required=True, + ondelete='cascade') + field_in_pallet = fields.Char('Field2') diff --git a/openerp/addons/test_inherits/tests/__init__.py b/openerp/addons/test_inherits/tests/__init__.py new file mode 100644 index 00000000000..694d1720d65 --- /dev/null +++ b/openerp/addons/test_inherits/tests/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import test_inherits diff --git a/openerp/addons/test_inherits/tests/test_inherits.py b/openerp/addons/test_inherits/tests/test_inherits.py new file mode 100644 index 00000000000..1fcdbb2f3ec --- /dev/null +++ b/openerp/addons/test_inherits/tests/test_inherits.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +from openerp.tests import common + + +class test_inherits(common.TransactionCase): + + def test_create_3_levels_inherits(self): + """ Check that we can create an inherits on 3 levels """ + pallet = self.env['test.pallet'].create({ + 'name': 'B', + 'field_in_box': 'box', + 'field_in_pallet': 'pallet', + }) + self.assertTrue(pallet) + self.assertEqual(pallet.name, 'B') + self.assertEqual(pallet.field_in_box, 'box') + self.assertEqual(pallet.field_in_pallet, 'pallet')