summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/account/models/account_journal.py17
-rw-r--r--addons/mail/models/mail_alias.py1
2 files changed, 17 insertions, 1 deletions
diff --git a/addons/account/models/account_journal.py b/addons/account/models/account_journal.py
index 98493af3e8e..46dbb0ac76b 100644
--- a/addons/account/models/account_journal.py
+++ b/addons/account/models/account_journal.py
@@ -3,8 +3,12 @@ from odoo import api, fields, models, _
from odoo.osv import expression
from odoo.exceptions import UserError, ValidationError
from odoo.addons.base.models.res_bank import sanitize_account_number
+from odoo.tools import remove_accents
+import logging
import re
+_logger = logging.getLogger(__name__)
+
class AccountJournalGroup(models.Model):
_name = 'account.journal.group'
@@ -357,7 +361,18 @@ class AccountJournal(models.Model):
if not alias_name:
alias_name = self.name
if self.company_id != self.env.ref('base.main_company'):
- alias_name += '-' + re.sub("[^\w!#$%&'*+/=?^`{|}~\-]", '', str(self.company_id.name))
+ alias_name += '-' + str(self.company_id.name)
+ try:
+ remove_accents(alias_name).encode('ascii')
+ except UnicodeEncodeError:
+ try:
+ remove_accents(self.code).encode('ascii')
+ safe_alias_name = self.code
+ except UnicodeEncodeError:
+ safe_alias_name = self.type
+ _logger.warning("Cannot use '%s' as email alias, fallback to '%s'",
+ alias_name, safe_alias_name)
+ alias_name = safe_alias_name
return {
'alias_defaults': {'move_type': type == 'purchase' and 'in_invoice' or 'out_invoice', 'company_id': self.company_id.id, 'journal_id': self.id},
'alias_parent_thread_id': self.id,
diff --git a/addons/mail/models/mail_alias.py b/addons/mail/models/mail_alias.py
index 3c08bb168d6..b41b267947f 100644
--- a/addons/mail/models/mail_alias.py
+++ b/addons/mail/models/mail_alias.py
@@ -142,6 +142,7 @@ class Alias(models.Model):
name already exists an UserError is raised. """
sanitized_name = remove_accents(name).lower().split('@')[0]
sanitized_name = re.sub(r'[^\w+.]+', '-', sanitized_name)
+ sanitized_name = sanitized_name.encode('ascii', errors='replace').decode()
catchall_alias = self.env['ir.config_parameter'].sudo().get_param('mail.catchall.alias')
bounce_alias = self.env['ir.config_parameter'].sudo().get_param('mail.bounce.alias')