diff --git a/addons/hr_expense/data/mail_templates.xml b/addons/hr_expense/data/mail_templates.xml
index bf39d13774f..52e221919bf 100644
--- a/addons/hr_expense/data/mail_templates.xml
+++ b/addons/hr_expense/data/mail_templates.xml
@@ -34,10 +34,10 @@
-
+
-  |
+ ![]() |
diff --git a/addons/im_livechat/data/mail_templates.xml b/addons/im_livechat/data/mail_templates.xml
index 29d1c5e2032..2625d4b63eb 100644
--- a/addons/im_livechat/data/mail_templates.xml
+++ b/addons/im_livechat/data/mail_templates.xml
@@ -14,7 +14,7 @@
-
+ |
|
diff --git a/addons/lunch/data/mail_template_data.xml b/addons/lunch/data/mail_template_data.xml
index 4bc41d53c9d..a0b9e049d54 100644
--- a/addons/lunch/data/mail_template_data.xml
+++ b/addons/lunch/data/mail_template_data.xml
@@ -19,7 +19,7 @@
Lunch Order
- |
+ |
|
diff --git a/addons/mail/data/mail_templates_email_layouts.xml b/addons/mail/data/mail_templates_email_layouts.xml
index ff56fe0ffd5..7bd2e7cf154 100644
--- a/addons/mail/data/mail_templates_email_layouts.xml
+++ b/addons/mail/data/mail_templates_email_layouts.xml
@@ -23,8 +23,8 @@
-
-
+ |
+
|
@@ -138,8 +138,8 @@
-
-
+ |
+
|
diff --git a/addons/portal/data/mail_template_data.xml b/addons/portal/data/mail_template_data.xml
index 4e24d93c859..2205279648c 100644
--- a/addons/portal/data/mail_template_data.xml
+++ b/addons/portal/data/mail_template_data.xml
@@ -19,7 +19,7 @@
|
Your Account
Marc Demo
- |
+ |
|
|
diff --git a/addons/survey/data/mail_template_data.xml b/addons/survey/data/mail_template_data.xml
index 559ce33b261..a0b3ff7fdac 100644
--- a/addons/survey/data/mail_template_data.xml
+++ b/addons/survey/data/mail_template_data.xml
@@ -58,7 +58,9 @@
|
-
+
|
Certification: Feedback Form
|
diff --git a/addons/website/models/website.py b/addons/website/models/website.py
index b214ba3e816..c298f0835b7 100644
--- a/addons/website/models/website.py
+++ b/addons/website/models/website.py
@@ -357,7 +357,7 @@ class Website(models.Model):
'module_state': feature.module_id.state,
} for feature in configurator_features]
r['logo'] = False
- if company.logo and company.logo != company._get_logo():
+ if not company.uses_default_logo:
r['logo'] = company.logo.decode('utf-8')
try:
result = self._website_api_rpc('/api/website/1/configurator/industries', {'lang': self.env.context.get('lang')})
@@ -543,7 +543,7 @@ class Website(models.Model):
'res_field': 'logo',
'res_id': website.id,
})
- elif not logo_attachment_id and company.logo and company.logo != company._get_logo():
+ elif not logo_attachment_id and not company.uses_default_logo:
website.logo = company.logo.decode('utf-8')
# palette
diff --git a/addons/website_crm_partner_assign/data/mail_template_data.xml b/addons/website_crm_partner_assign/data/mail_template_data.xml
index 792c847722a..14da8105145 100644
--- a/addons/website_crm_partner_assign/data/mail_template_data.xml
+++ b/addons/website_crm_partner_assign/data/mail_template_data.xml
@@ -19,7 +19,7 @@
Your leads
- |
+ |
|
|
diff --git a/addons/website_profile/data/mail_template_data.xml b/addons/website_profile/data/mail_template_data.xml
index 9a1dbcbf9ab..c6ec608bf92 100644
--- a/addons/website_profile/data/mail_template_data.xml
+++ b/addons/website_profile/data/mail_template_data.xml
@@ -24,7 +24,7 @@
YourCompany Profile validation
|
-
+ |
|
diff --git a/addons/website_slides/data/mail_templates.xml b/addons/website_slides/data/mail_templates.xml
index 4d7c2413c72..d0e681fbe25 100644
--- a/addons/website_slides/data/mail_templates.xml
+++ b/addons/website_slides/data/mail_templates.xml
@@ -15,8 +15,8 @@
-
-
+ |
+
|
diff --git a/odoo/addons/base/models/res_company.py b/odoo/addons/base/models/res_company.py
index 8fb9c6dc4ca..49287499c20 100644
--- a/odoo/addons/base/models/res_company.py
+++ b/odoo/addons/base/models/res_company.py
@@ -10,6 +10,7 @@ import warnings
from odoo import api, fields, models, tools, _, Command
from odoo.exceptions import ValidationError, UserError
from odoo.modules.module import get_resource_path
+from odoo.tools import file_open
from random import randrange
from PIL import Image
@@ -25,7 +26,8 @@ class Company(models.Model):
raise UserError(_('Duplicating a company is not allowed. Please create a new company instead.'))
def _get_logo(self):
- return base64.b64encode(open(os.path.join(tools.config['root_path'], 'addons', 'base', 'static', 'img', 'res_company_logo.png'), 'rb') .read())
+ with file_open('base/static/img/res_company_logo.png', 'rb') as file:
+ return base64.b64encode(file.read())
def _default_currency_id(self):
return self.env.user.company_id.currency_id
@@ -43,6 +45,7 @@ class Company(models.Model):
# logo_web: do not store in attachments, since the image is retrieved in SQL for
# performance reasons (see addons/web/controllers/main.py, Binary.company_logo)
logo_web = fields.Binary(compute='_compute_logo_web', store=True, attachment=False)
+ uses_default_logo = fields.Boolean(compute='_compute_uses_default_logo', store=True)
currency_id = fields.Many2one('res.currency', string='Currency', required=True, default=lambda self: self._default_currency_id())
user_ids = fields.Many2many('res.users', 'res_company_users_rel', 'cid', 'user_id', string='Accepted Users')
street = fields.Char(compute='_compute_address', inverse='_inverse_street')
@@ -131,6 +134,12 @@ class Company(models.Model):
img = company.partner_id.image_1920
company.logo_web = img and base64.b64encode(tools.image_process(base64.b64decode(img), size=(180, 0)))
+ @api.depends('partner_id.image_1920')
+ def _compute_uses_default_logo(self):
+ default_logo = self._get_logo()
+ for company in self:
+ company.uses_default_logo = not company.logo or company.logo == default_logo
+
@api.onchange('state_id')
def _onchange_state(self):
if self.state_id.country_id:
diff --git a/odoo/addons/base/tests/test_res_company.py b/odoo/addons/base/tests/test_res_company.py
index caf6d785c89..815daecb9c7 100644
--- a/odoo/addons/base/tests/test_res_company.py
+++ b/odoo/addons/base/tests/test_res_company.py
@@ -38,3 +38,15 @@ class TestCompany(TransactionCase):
'company_ids': main_company.ids,
})
user.action_unarchive()
+
+ def test_logo_check(self):
+ """Ensure uses_default_logo is properly (re-)computed."""
+ company = self.env['res.company'].create({'name': 'foo'})
+
+ self.assertTrue(company.logo, 'Should have a default logo')
+ self.assertTrue(company.uses_default_logo)
+ company.partner_id.image_1920 = False
+ # No logo means we fall back to another default logo for the website route -> uses_default
+ self.assertTrue(company.uses_default_logo)
+ company.partner_id.image_1920 = "R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
+ self.assertFalse(company.uses_default_logo)
| | | |