From d9365a24299cb8a48a16cbff2c5874d7610ca577 Mon Sep 17 00:00:00 2001 From: Christopher Rogos Date: Fri, 24 Jan 2025 12:07:12 +0000 Subject: [PATCH] [IMP] tracking_manager: add field type html support --- tracking_manager/models/__init__.py | 1 + .../models/mail_tracking_value.py | 27 +++++++++++++++++++ tracking_manager/tests/__init__.py | 1 + .../tests/test_mail_tracking_value.py | 22 +++++++++++++++ 4 files changed, 51 insertions(+) create mode 100644 tracking_manager/models/mail_tracking_value.py create mode 100644 tracking_manager/tests/test_mail_tracking_value.py diff --git a/tracking_manager/models/__init__.py b/tracking_manager/models/__init__.py index e97a88fcbcf..0617d405fbf 100644 --- a/tracking_manager/models/__init__.py +++ b/tracking_manager/models/__init__.py @@ -2,3 +2,4 @@ from . import ir_model from . import ir_model_fields from . import models +from . import mail_tracking_value diff --git a/tracking_manager/models/mail_tracking_value.py b/tracking_manager/models/mail_tracking_value.py new file mode 100644 index 00000000000..67687266221 --- /dev/null +++ b/tracking_manager/models/mail_tracking_value.py @@ -0,0 +1,27 @@ +from odoo import api, models +from odoo.tools import html2plaintext + + +class MailTracking(models.Model): + _inherit = "mail.tracking.value" + + @api.model + def _create_tracking_values( + self, initial_value, new_value, col_name, col_info, record + ): + try: + return super()._create_tracking_values( + initial_value, new_value, col_name, col_info, record + ) + except NotImplementedError: + if col_info["type"] == "html": + field = self.env["ir.model.fields"]._get(record._name, col_name) + values = {"field_id": field.id} + values.update( + { + "old_value_char": html2plaintext(initial_value) or "", + "new_value_char": html2plaintext(new_value) or "", + } + ) + return values + raise diff --git a/tracking_manager/tests/__init__.py b/tracking_manager/tests/__init__.py index 3e7e471c73b..1b7fbd3e85a 100644 --- a/tracking_manager/tests/__init__.py +++ b/tracking_manager/tests/__init__.py @@ -1 +1,2 @@ from . import test_tracking_manager +from . import test_mail_tracking_value diff --git a/tracking_manager/tests/test_mail_tracking_value.py b/tracking_manager/tests/test_mail_tracking_value.py new file mode 100644 index 00000000000..995b494153b --- /dev/null +++ b/tracking_manager/tests/test_mail_tracking_value.py @@ -0,0 +1,22 @@ +from odoo.tests.common import TransactionCase + + +class TestMailTracking(TransactionCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.MailTracking = cls.env["mail.tracking.value"] + + def test_create_tracking_values_html(self): + initial_value = "

Initial Value

" + new_value = "

New Value

" + col_name = "comment" + col_info = {"type": "html"} + record = self.env["res.partner"].create({"name": "Test Partner"}) + + values = self.MailTracking._create_tracking_values( + initial_value, new_value, col_name, col_info, record + ) + + self.assertEqual(values["old_value_char"], "Initial Value") + self.assertEqual(values["new_value_char"], "New Value")