From d79197f1f36464467ef074342e1fa96451acabd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= <tde@odoo.com> Date: Tue, 30 Nov 2021 09:23:38 +0000 Subject: [PATCH] [REF] various: remove usage and dependency on html2text library We have our own html2plaintext, already used in lot of use cases instead of just a few for the html2txt library. Notably for emails: most emails going through Odoo stack use our simple html2plaintext to format the body alternative. When no body alternative is given to ``build_email`` an alternative is built using the library to remove. Using our own parser allows to have the same results compared to using ``MailMail.send()``. Difference lies in spaces and new lines as well as markdown. Our html2plaintext is a bit simple and does not try to generate Markdown but generates a simple plaintext version. This also helps solving some issues with depending on that library. Task-2702034 closes odoo/odoo#82330 X-original-commit: odoo/odoo@9b5f86e8fa5bef341ea7392b86987092d6f6933a Related: odoo/enterprise#23292 Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com> --- .../posbox/overwrite_before_init/etc/init_posbox_image.sh | 1 - debian/control | 1 - odoo/addons/base/models/ir_mail_server.py | 3 +-- odoo/addons/base/tests/test_ir_mail_server.py | 4 ++-- requirements.txt | 1 - setup.cfg | 1 - setup.py | 1 - setup/package.dfdebian | 1 - setup/package.dffedora | 1 - 9 files changed, 3 insertions(+), 11 deletions(-) diff --git a/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init_posbox_image.sh b/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init_posbox_image.sh index f8c37d118a10..ab8431ebe468 100755 --- a/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init_posbox_image.sh +++ b/addons/point_of_sale/tools/posbox/overwrite_before_init/etc/init_posbox_image.sh @@ -51,7 +51,6 @@ PKGS_TO_INSTALL=" python3-decorator \ python3-dev \ python3-docutils \ - python3-html2text \ python3-jinja2 \ python3-ldap \ python3-libsass \ diff --git a/debian/control b/debian/control index 0e1177d906f5..7ae8832758b9 100644 --- a/debian/control +++ b/debian/control @@ -27,7 +27,6 @@ Depends: python3-decorator, python3-docutils, python3-freezegun, - python3-html2text, python3-pil, python3-jinja2, python3-libsass, diff --git a/odoo/addons/base/models/ir_mail_server.py b/odoo/addons/base/models/ir_mail_server.py index b9d225316299..edb9570ca650 100644 --- a/odoo/addons/base/models/ir_mail_server.py +++ b/odoo/addons/base/models/ir_mail_server.py @@ -14,7 +14,6 @@ from ssl import SSLError import sys import threading -import html2text import idna from odoo import api, fields, models, tools, _ @@ -325,7 +324,7 @@ class IrMailServer(models.Model): email_body = ustr(body) if subtype == 'html' and not body_alternative: - msg.add_alternative(html2text.html2text(email_body), subtype='plain', charset='utf-8') + msg.add_alternative(tools.html2plaintext(email_body), subtype='plain', charset='utf-8') msg.add_alternative(email_body, subtype=subtype, charset='utf-8') elif body_alternative: msg.add_alternative(ustr(body_alternative), subtype=subtype_alternative, charset='utf-8') diff --git a/odoo/addons/base/tests/test_ir_mail_server.py b/odoo/addons/base/tests/test_ir_mail_server.py index 0af3292686f7..ae1917e24ebd 100644 --- a/odoo/addons/base/tests/test_ir_mail_server.py +++ b/odoo/addons/base/tests/test_ir_mail_server.py @@ -22,8 +22,8 @@ class TestIrMailServer(TransactionCase): 'content', 'content', 'content', - "test1\n\n**test2**\n\n_test3_\n\n_test4_\n\n~~test5~~\n\ntest6\n\n * test7\n * test8\n\n 1. test9\n 2. test10\n\n> test11\n\n> > test12\n>>\n\n>> \n>\n\n[google](http://google.com) [test link](javascript:alert\('malicious code'\))", - 'On 01/05/2016 10:24 AM, Raoul Poilvache wrote: \n\n> **_Test reply. The suite._** \n>\n>\n> \n>\n>\n> \-- \n>\n>\n> Raoul Poilvache\n\nTop cool !!! \n \n\n \n \n -- \n Raoul Poilvache\n ', + "test1\n*test2*\ntest3\ntest4\ntest5\ntest6 test7\ntest8 test9\ntest10\ntest11\ntest12\ngoogle [1]\ntest link [2]\n\n\n[1] http://google.com\n[2] javascript:alert('malicious code')", + 'On 01/05/2016 10:24 AM, Raoul\nPoilvache wrote:\n\n* Test reply. The suite. *\n\n--\nRaoul Poilvache\n\nTop cool !!!\n\n--\nRaoul Poilvache', ] for body, expected in zip(bodies, expected_list): message = self.env['ir.mail_server'].build_email( diff --git a/requirements.txt b/requirements.txt index e63f2baf8a14..b46ed6a33706 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,7 +12,6 @@ gevent==1.4.0 ; sys_platform == 'win32' and python_version < '3.7' greenlet==0.4.10 ; python_version < '3.7' greenlet==0.4.15 ; python_version == '3.7' greenlet==0.4.17 ; python_version > '3.7' -html2text==2018.1.9 idna==2.6 Jinja2==2.10.1; python_version < '3.8' # bullseye version, focal patched 2.10 diff --git a/setup.cfg b/setup.cfg index f09984b2ddf7..51c9bae80ace 100644 --- a/setup.cfg +++ b/setup.cfg @@ -15,7 +15,6 @@ requires = python3-freezegun python3-gevent python3-greenlet - python3-html2text python3-idna python3-jinja2 python3-lxml diff --git a/setup.py b/setup.py index b3d042d3689b..957496a1889a 100644 --- a/setup.py +++ b/setup.py @@ -27,7 +27,6 @@ setup( 'decorator', 'docutils', 'gevent', - 'html2text', 'idna', 'Jinja2', 'lxml', # windows binary http://www.lfd.uci.edu/~gohlke/pythonlibs/ diff --git a/setup/package.dfdebian b/setup/package.dfdebian index d0a8c2e4981b..a91feed55e06 100644 --- a/setup/package.dfdebian +++ b/setup/package.dfdebian @@ -28,7 +28,6 @@ RUN apt-get update -qq && \ python3-decorator \ python3-docutils \ python3-gevent \ - python3-html2text \ python3-pil \ python3-jinja2 \ python3-libsass \ diff --git a/setup/package.dffedora b/setup/package.dffedora index bdff72869888..acf301f25fc6 100644 --- a/setup/package.dffedora +++ b/setup/package.dffedora @@ -21,7 +21,6 @@ RUN dnf update -d 0 -e 0 -y && \ python3-freezegun \ python3-gevent \ python3-greenlet \ - python3-html2text \ python3-idna \ python3-jinja2 \ python3-lxml \ -- GitLab