[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:
co-authored by
Derie Romain
parent
602807acdf
commit
62d73253f3
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user