diff options
| author | Raphael Collet <rco@odoo.com> | 2018-04-17 16:57:39 +0200 |
|---|---|---|
| committer | Raphael Collet <rco@odoo.com> | 2018-04-19 10:00:49 +0200 |
| commit | c9caf55177359b404e4d752dcf1966ca58dccfda (patch) | |
| tree | d2c1af18ce60c51cef6e3174da8f3f5b612d33b8 /odoo/models.py | |
| parent | 8c64159b8847dc465a21415c085d6526d280be02 (diff) | |
[FIX] models: bad setup of inherited custom fields
Assume a custom field F is defined on model 'res.partner'. The setup of F may
silently fail because of missing stuff. In that situation, setting up the
field inherited from F on model 'res.users' should also silently fail.
To reproduce the bug, install Invoicing, create a related custom field F on
'res.partner' with 'property_account_position_id.active', and install another
module. Setting up F after loading module 'base' will fail because the field
'property_account_position_id' does not exist yet. The error is not caught by
the inheritance of F on model 'res.users', and the installation crashes.
Diffstat (limited to 'odoo/models.py')
| -rw-r--r-- | odoo/models.py | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/odoo/models.py b/odoo/models.py index 74b4431b51f..a9670ca2257 100644 --- a/odoo/models.py +++ b/odoo/models.py @@ -2292,6 +2292,7 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})): # - copy inherited fields iff their original field is copied fields[name] = field.new( inherited=True, + inherited_field=field, related=(parent_field, name), related_sudo=False, copy=field.copy, @@ -2409,7 +2410,7 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})): try: field.setup_full(self) except Exception: - if not self.pool.loaded and field.manual: + if not self.pool.loaded and field.base_field.manual: # Something goes wrong when setup a manual field. # This can happen with related fields using another manual many2one field # that hasn't been loaded because the comodel does not exist yet. |
