summaryrefslogtreecommitdiff
path: root/odoo/addons/base/models
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2019-05-09 21:07:44 +0200
committerChristophe Simonis <chs@odoo.com>2019-05-09 21:07:44 +0200
commitcc3a2c1bf3c8aa2a7f85b5c2f8eb4e9415f3e6c7 (patch)
treef97b6171e54f052126a1fad2f55a33c603e18bef /odoo/addons/base/models
parent92cb648882082cc8d84d3bbe75304def5196998c (diff)
parente11bacfe512a3170f44d6d43646af914a9cf3b73 (diff)
[MERGE] forward port branch 12.0 up to e11bacfe512
Diffstat (limited to 'odoo/addons/base/models')
-rw-r--r--odoo/addons/base/models/ir_model.py16
-rw-r--r--odoo/addons/base/models/res_partner.py9
2 files changed, 18 insertions, 7 deletions
diff --git a/odoo/addons/base/models/ir_model.py b/odoo/addons/base/models/ir_model.py
index 089204dda5f..41f013b3ccf 100644
--- a/odoo/addons/base/models/ir_model.py
+++ b/odoo/addons/base/models/ir_model.py
@@ -639,11 +639,17 @@ class IrModelFields(models.Model):
for view in views:
view._check_xml()
except Exception:
- raise UserError("\n".join([
- _("Cannot rename/delete fields that are still present in views:"),
- _("Fields: %s") % ", ".join(str(f) for f in fields),
- _("View: %s") % view.name,
- ]))
+ if not self._context.get(MODULE_UNINSTALL_FLAG):
+ raise UserError("\n".join([
+ _("Cannot rename/delete fields that are still present in views:"),
+ _("Fields: %s") % ", ".join(str(f) for f in fields),
+ _("View: %s") % view.name,
+ ]))
+ else:
+ # uninstall mode
+ _logger.warn("The following fields were force-deleted to prevent a registry crash "
+ + ", ".join(str(f) for f in fields)
+ + " the following view might be broken %s" % view.name)
finally:
# the registry has been modified, restore it
self.pool.setup_models(self._cr)
diff --git a/odoo/addons/base/models/res_partner.py b/odoo/addons/base/models/res_partner.py
index 646d429d19e..0900d46895f 100644
--- a/odoo/addons/base/models/res_partner.py
+++ b/odoo/addons/base/models/res_partner.py
@@ -443,6 +443,11 @@ class Partner(models.Model):
"""Returns the list of address fields that are synced from the parent."""
return list(ADDRESS_FIELDS)
+ @api.model
+ def _formatting_address_fields(self):
+ """Returns the list of address fields usable to format addresses."""
+ return self._address_fields()
+
@api.multi
def update_address(self, vals):
addr_vals = {key: vals[key] for key in self._address_fields() if key in vals}
@@ -914,7 +919,7 @@ class Partner(models.Model):
'country_name': self._get_country_name(),
'company_name': self.commercial_company_name or '',
}
- for field in self._address_fields():
+ for field in self._formatting_address_fields():
args[field] = getattr(self, field) or ''
if without_company:
args['company_name'] = ''
@@ -924,7 +929,7 @@ class Partner(models.Model):
def _display_address_depends(self):
# field dependencies of method _display_address()
- return self._address_fields() + [
+ return self._formatting_address_fields() + [
'country_id.address_format', 'country_id.code', 'country_id.name',
'company_name', 'state_id.code', 'state_id.name',
]