diff options
| author | Raphael Collet <rco@odoo.com> | 2018-04-17 16:57:39 +0200 |
|---|---|---|
| committer | Raphael Collet <rco@odoo.com> | 2018-04-18 17:26:05 +0200 |
| commit | 23431389c36e57bfce99afb97abfca6a062cfc74 (patch) | |
| tree | 95d676620c79d96514916166beacf4d681a555d5 /odoo/fields.py | |
| parent | 87b42ad9a887faacbbefcab9dd0703a5c51ce28b (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.
OPW 1835872
Diffstat (limited to 'odoo/fields.py')
| -rw-r--r-- | odoo/fields.py | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/odoo/fields.py b/odoo/fields.py index 60043915925..b472e35658b 100644 --- a/odoo/fields.py +++ b/odoo/fields.py @@ -320,6 +320,7 @@ class Field(object): 'automatic': False, # whether the field is automatically created ("magic" field) 'inherited': False, # whether the field is inherited (_inherits) + 'inherited_field': None, # the corresponding inherited field 'name': None, # name of the field 'model_name': None, # name of the model of this field @@ -647,7 +648,7 @@ class Field(object): @property def base_field(self): """ Return the base field of an inherited field, or ``self``. """ - return self.related_field.base_field if self.inherited else self + return self.inherited_field.base_field if self.inherited_field else self # # Company-dependent fields |
