summaryrefslogtreecommitdiff
path: root/odoo
diff options
context:
space:
mode:
Diffstat (limited to 'odoo')
-rw-r--r--odoo/addons/test_new_api/tests/test_new_fields.py7
-rw-r--r--odoo/fields.py12
-rw-r--r--odoo/models.py18
3 files changed, 22 insertions, 15 deletions
diff --git a/odoo/addons/test_new_api/tests/test_new_fields.py b/odoo/addons/test_new_api/tests/test_new_fields.py
index 562949215f8..668391636cf 100644
--- a/odoo/addons/test_new_api/tests/test_new_fields.py
+++ b/odoo/addons/test_new_api/tests/test_new_fields.py
@@ -76,6 +76,13 @@ class TestFields(common.TransactionCase):
field = self.env['test_new_api.message']._fields['x_bool_false_computed']
self.assertFalse(field.depends)
+ def test_10_display_name(self):
+ """ test definition of automatic field 'display_name' """
+ field = type(self.env['test_new_api.discussion']).display_name
+ self.assertTrue(field.automatic)
+ self.assertTrue(field.compute)
+ self.assertEqual(field.depends, ('name',))
+
def test_10_non_stored(self):
""" test non-stored fields """
# a field declared with store=False should not have a column
diff --git a/odoo/fields.py b/odoo/fields.py
index 5529288d177..1ba30e17f3f 100644
--- a/odoo/fields.py
+++ b/odoo/fields.py
@@ -490,6 +490,10 @@ class Field(MetaField('DummyField', (object,), {})):
def _setup_regular_base(self, model):
""" Setup the attributes of a non-related field. """
+ pass
+
+ def _setup_regular_full(self, model):
+ """ Determine the dependencies and inverse field(s) of ``self``. """
if self.depends is not None:
return
@@ -507,10 +511,6 @@ class Field(MetaField('DummyField', (object,), {})):
else:
self.depends = tuple(get_depends(self.compute))
- def _setup_regular_full(self, model):
- """ Setup the inverse field(s) of ``self``. """
- pass
-
#
# Setup of related fields
#
@@ -2364,8 +2364,8 @@ class _RelationalMulti(_Relational):
for record in records:
record[self.name] = record[self.name].filtered(accessible)
- def _setup_regular_base(self, model):
- super(_RelationalMulti, self)._setup_regular_base(model)
+ def _setup_regular_full(self, model):
+ super(_RelationalMulti, self)._setup_regular_full(model)
if isinstance(self.domain, list):
self.depends += tuple(
self.name + '.' + arg[0]
diff --git a/odoo/models.py b/odoo/models.py
index 6693dac4c55..d7abce147d7 100644
--- a/odoo/models.py
+++ b/odoo/models.py
@@ -2609,6 +2609,15 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})):
cls._setup_done = True
+ # 5. determine and validate rec_name
+ if cls._rec_name:
+ assert cls._rec_name in cls._fields, \
+ "Invalid rec_name %s for model %s" % (cls._rec_name, cls._name)
+ elif 'name' in cls._fields:
+ cls._rec_name = 'name'
+ elif 'x_name' in cls._fields:
+ cls._rec_name = 'x_name'
+
@api.model
def _setup_fields(self):
""" Setup the fields, except for recomputation triggers. """
@@ -2661,15 +2670,6 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})):
# register constraints and onchange methods
cls._init_constraints_onchanges()
- # validate rec_name
- if cls._rec_name:
- assert cls._rec_name in cls._fields, \
- "Invalid rec_name %s for model %s" % (cls._rec_name, cls._name)
- elif 'name' in cls._fields:
- cls._rec_name = 'name'
- elif 'x_name' in cls._fields:
- cls._rec_name = 'x_name'
-
@api.model
def fields_get(self, allfields=None, attributes=None):
""" fields_get([fields][, attributes])