[ADD] website, base: improve name_get in case of multi_Website mode

In some case like for website_menu or res.partner from the sale_order form view
it is nice to know easily on which website this record is depending.

Co-authored-by: Derie Romain <rde@odoo.com>
Co-authored-by: Kersten Jérémy <jke@odoo.com>
This commit is contained in:
Jeremy Kersten
2018-08-13 20:16:34 +02:00
co-authored by Derie Romain
parent 602807acdf
commit 62d73253f3
4 changed files with 54 additions and 20 deletions
+17
View File
@@ -4,6 +4,7 @@
import werkzeug
from odoo import api, fields, models
from odoo.tools.pycompat import izip
def urlplus(url, params):
@@ -36,3 +37,19 @@ class Partner(models.Model):
'z': zoom,
}
return urlplus('https://maps.google.com/maps', params)
@api.multi
def _get_name(self):
name = super(Partner, self)._get_name()
if self._context.get('display_website') and self.env.user.has_group('website.group_multi_website'):
if self.website_id:
name += ' [%s]' % self.website_id.name
return name
def _compute_display_name(self):
self2 = self.with_context(display_website=False)
super(Partner, self2)._compute_display_name()
# onchange uses the cache to retrieve value, we need to copy computed_value into the initial env
for record, record2 in izip(self, self2):
record.display_name = record2.display_name
+9 -1
View File
@@ -967,6 +967,14 @@ class Menu(models.Model):
parent_path = fields.Char(index=True)
is_visible = fields.Boolean(compute='_compute_visible', string='Is Visible')
@api.multi
def name_get(self):
res = []
for menu in self:
website_suffix = '%s - %s' % (menu.name, menu.website_id.name)
res.append((menu.id, website_suffix if menu.website_id and self.env.user.has_group('website.group_multi_website') else menu.name))
return res
@api.model
def create(self, vals):
''' In case a menu without a website_id is trying to be created, we duplicate
@@ -987,7 +995,7 @@ class Menu(models.Model):
'parent_id': website.menu_id.id,
})
res = super(Menu, self).create(vals)
return res # create loop, what to return ? last created record ?
return res # Only one record is returned but multiple could have been created
@api.one
def _compute_visible(self):
@@ -233,6 +233,9 @@
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<field name="partner_id" position="attributes">
<attribute name="context">{'display_website': True}</attribute>
</field>
<field name="origin" position="after">
<field name="website_id" groups="website.group_multi_website"/>
</field>
+25 -19
View File
@@ -596,29 +596,35 @@ class Partner(models.Model):
'target': 'new',
'flags': {'form': {'action_buttons': True}}}
def _get_name(self):
""" Utility method to allow name_get to be overrided without re-browse the partner """
partner = self
name = partner.name or ''
if partner.company_name or partner.parent_id:
if not name and partner.type in ['invoice', 'delivery', 'other']:
name = dict(self.fields_get(['type'])['type']['selection'])[partner.type]
if not partner.is_company:
name = "%s, %s" % (partner.commercial_company_name or partner.parent_id.name, name)
if self._context.get('show_address_only'):
name = partner._display_address(without_company=True)
if self._context.get('show_address'):
name = name + "\n" + partner._display_address(without_company=True)
name = name.replace('\n\n', '\n')
name = name.replace('\n\n', '\n')
if self._context.get('address_inline'):
name = name.replace('\n', ', ')
if self._context.get('show_email') and partner.email:
name = "%s <%s>" % (name, partner.email)
if self._context.get('html_format'):
name = name.replace('\n', '<br/>')
return name
@api.multi
def name_get(self):
res = []
for partner in self:
name = partner.name or ''
if partner.company_name or partner.parent_id:
if not name and partner.type in ['invoice', 'delivery', 'other']:
name = dict(self.fields_get(['type'])['type']['selection'])[partner.type]
if not partner.is_company:
name = "%s, %s" % (partner.commercial_company_name or partner.parent_id.name, name)
if self._context.get('show_address_only'):
name = partner._display_address(without_company=True)
if self._context.get('show_address'):
name = name + "\n" + partner._display_address(without_company=True)
name = name.replace('\n\n', '\n')
name = name.replace('\n\n', '\n')
if self._context.get('address_inline'):
name = name.replace('\n', ', ')
if self._context.get('show_email') and partner.email:
name = "%s <%s>" % (name, partner.email)
if self._context.get('html_format'):
name = name.replace('\n', '<br/>')
name = partner._get_name()
res.append((partner.id, name))
return res