Skip to content

Commit 30534da

Browse files
KangOlsagu-odoo
andcommitted
[FIX] util.html_escape
In python2, `html_escape` always returns a byte-string with non-ascii characters replaced by their html entities. ``` Traceback (most recent call last): File "/home/odoo/src/odoo/10.0/odoo/service/server.py", line 974, in preload_registries registry = Registry.new(dbname, update_module=update_module) File "/home/odoo/src/odoo/10.0/odoo/modules/registry.py", line 83, in new odoo.modules.load_modules(registry._db, force_demo, status, update_module) File "/home/odoo/src/odoo/10.0/odoo/modules/loading.py", line 318, in load_modules report=report, models_to_check=models_to_check) File "/home/odoo/src/odoo/10.0/odoo/modules/loading.py", line 136, in load_module_graph migrations.migrate_module(package, 'pre') File "/home/odoo/src/odoo/10.0/odoo/modules/migration.py", line 169, in migrate_module migrate(self.cr, installed_version) File "/home/odoo/src/odoo/10.0/odoo/addons/base/maintenance/migrations/base/0.0.0/pre-match-partner_company.py", line 53, in migrate for p_id, p_name, c_id, c_name in rows File "/home/odoo/src/odoo/10.0/odoo/addons/base/maintenance/migrations/base/0.0.0/pre-match-partner_company.py", line 53, in <genexpr> for p_id, p_name, c_id, c_name in rows File "/home/odoo/src/odoo/10.0/odoo/addons/base/maintenance/migrations/util/report.py", line 305, in get_anchor_link_to_record anchor_tag = '<a target="_blank" href="{}">{}</a>'.format(url, html_escape(name)) UnicodeEncodeError: 'ascii' codec can't encode character u'\xe8' in position 18: ordinal not in range(128) ``` upg-2642498 opw-4642911 closes #239 Signed-off-by: Christophe Simonis (chs) <[email protected]> Co-authored-by: agu-odoo <[email protected]>
1 parent 1109830 commit 30534da

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

src/util/report.py

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import logging
33
import os
44
import re
5+
import sys
56
from textwrap import dedent
67

78
import lxml
@@ -32,27 +33,30 @@
3233
except ImportError:
3334
from odoo import SUPERUSER_ID
3435
from odoo import release
35-
from odoo.tools import html_escape
3636
from odoo.tools.mail import html_sanitize
3737
except ImportError:
3838
from openerp import SUPERUSER_ID, release
3939
from openerp.tools.mail import html_sanitize
4040

41-
try:
42-
from openerp.tools.misc import html_escape
43-
except ImportError:
44-
import werkzeug.utils
4541

46-
# Avoid DeprecationWarning while still remaining compatible with werkzeug pre-0.9
47-
if parse_version(getattr(werkzeug, "__version__", "0.0")) < parse_version("0.9.0"):
42+
if sys.version_info > (3,):
43+
from odoo.tools import html_escape
44+
else:
45+
# In python2, `html_escape` always returns a byte-string with non-ascii characters replaced
46+
# by their html entities.
47+
48+
import werkzeug.utils
4849

49-
def html_escape(text):
50-
return werkzeug.utils.escape(text, quote=True)
50+
# Avoid DeprecationWarning while still remaining compatible with werkzeug pre-0.9
51+
if parse_version(getattr(werkzeug, "__version__", "0.0")) < parse_version("0.9.0"):
5152

52-
else:
53+
def html_escape(text):
54+
return werkzeug.utils.escape(text, quote=True).encode("ascii", "xmlcharrefreplace")
55+
56+
else:
5357

54-
def html_escape(text):
55-
return werkzeug.utils.escape(text)
58+
def html_escape(text):
59+
return werkzeug.utils.escape(text).encode("ascii", "xmlcharrefreplace")
5660

5761

5862
try:

0 commit comments

Comments
 (0)