summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSébastien Theys <seb@odoo.com>2018-12-13 10:57:21 +0000
committerSébastien Theys <seb@odoo.com>2018-12-13 11:17:23 +0000
commit1fa10cbc5d8a02aea9910512007afbcfc61b37b3 (patch)
tree74c1c0e39cbb96e4341cc3504c68e4e2f4b3e045
parent287136b85e55b4abca03122c7b1c59099abd0854 (diff)
[FIX] base,website_google_map: fix partner address not showing
Following commit 983c7e81529eb26a7a756e7d875b5638a26a3733. `_compute_display_name` is overridden in partner to force `show_adress` and some other context variables to None. When those values are in the context, calling `display_name` can give a different result than calling `name_get()[0][1]`. This commit reverts the changes of the mentioned commit where the behavior is actually different, that is, when `show_address` is in the context. It also adds a comment on the `_compute_display_name` method to avoid further mistakes. closes odoo/odoo#29510
-rw-r--r--addons/website_google_map/controllers/main.py2
-rw-r--r--odoo/addons/base/models/ir_qweb_fields.py2
-rw-r--r--odoo/models.py11
3 files changed, 13 insertions, 2 deletions
diff --git a/addons/website_google_map/controllers/main.py b/addons/website_google_map/controllers/main.py
index 169eb46f7c5..092fab26a03 100644
--- a/addons/website_google_map/controllers/main.py
+++ b/addons/website_google_map/controllers/main.py
@@ -43,7 +43,7 @@ class GoogleMap(http.Controller):
partner_data["partners"].append({
'id': partner.id,
'name': escape(partner.name),
- 'address': escape('\n'.join(partner.display_name.split('\n')[1:])),
+ 'address': escape('\n'.join(partner.name_get()[0][1].split('\n')[1:])),
'latitude': escape(str(partner.partner_latitude)),
'longitude': escape(str(partner.partner_longitude)),
})
diff --git a/odoo/addons/base/models/ir_qweb_fields.py b/odoo/addons/base/models/ir_qweb_fields.py
index 81e4c700d1a..1220b51a7c6 100644
--- a/odoo/addons/base/models/ir_qweb_fields.py
+++ b/odoo/addons/base/models/ir_qweb_fields.py
@@ -643,7 +643,7 @@ class Contact(models.AbstractModel):
opf = options and options.get('fields') or ["name", "address", "phone", "mobile", "email"]
opsep = options and options.get('separator') or "\n"
value = value.sudo().with_context(show_address=True)
- name_get = value.display_name
+ name_get = value.name_get()[0][1]
val = {
'name': name_get.split("\n")[0],
diff --git a/odoo/models.py b/odoo/models.py
index 6a498753376..fc8f1863f62 100644
--- a/odoo/models.py
+++ b/odoo/models.py
@@ -1560,6 +1560,17 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})):
@api.depends(lambda self: (self._rec_name,) if self._rec_name else ())
def _compute_display_name(self):
+ """Compute the value of the `display_name` field.
+
+ In general `display_name` is equal to calling `name_get()[0][1]`.
+
+ In that case, it is recommended to use `display_name` to uniformize the
+ code and to potentially take advantage of prefetch when applicable.
+
+ However some models might override this method. For them, the behavior
+ might differ, and it is important to select which of `display_name` or
+ `name_get()[0][1]` to call depending on the desired result.
+ """
names = dict(self.name_get())
for record in self:
record.display_name = names.get(record.id, False)