diff options
| -rw-r--r-- | addons/account/models/account_journal.py | 17 | ||||
| -rw-r--r-- | addons/mail/models/mail_alias.py | 1 |
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') |
