diff --git a/server_environment_data_encryption/__manifest__.py b/server_environment_data_encryption/__manifest__.py index 065e3fc..97755ce 100644 --- a/server_environment_data_encryption/__manifest__.py +++ b/server_environment_data_encryption/__manifest__.py @@ -1,7 +1,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { "name": "Server Environment Data Encryption", - "version": "14.0.1.0.2", + "version": "16.0.1.0.0", "development_status": "Alpha", "category": "Tools", "website": "https://github.com/OCA/server-env", diff --git a/server_environment_data_encryption/models/server_env_mixin.py b/server_environment_data_encryption/models/server_env_mixin.py index 11ada9f..7cde5ff 100644 --- a/server_environment_data_encryption/models/server_env_mixin.py +++ b/server_environment_data_encryption/models/server_env_mixin.py @@ -175,29 +175,27 @@ class ServerEnvMixin(models.AbstractModel): "configuration file" ) ) - doc = etree.XML(arch) - node = doc.xpath("//sheet") + node = arch.xpath("//sheet") if node: node = node[0] elem = self._get_extra_environment_info_div(current_env, other_environments) node.insert(0, elem) if current_env != config.get("running_env"): - self._set_readonly_form_view(doc) - arch = etree.tostring(doc, pretty_print=True, encoding="unicode") + self._set_readonly_form_view(arch) else: _logger.error("Missing sheet for form view on object {}".format(self._name)) return arch @api.model - def fields_view_get( - self, view_id=None, view_type="form", toolbar=False, submenu=False - ): - res = super().fields_view_get( - view_id=view_id, - view_type=view_type, - toolbar=toolbar, - submenu=submenu, + def _get_view(self, view_id=None, view_type="form", **options): + arch, view = super()._get_view(view_id=view_id, view_type=view_type, **options) + arch = self._update_form_view_from_env(arch, view_type) + return arch, view + + def _get_view_cache_key(self, view_id=None, view_type="form", **options): + res = super()._get_view_cache_key( + view_id=view_id, view_type=view_type, **options ) - res["arch"] = self._update_form_view_from_env(res["arch"], view_type) + res += (self.env.context.get("environment", False),) return res diff --git a/server_environment_data_encryption/tests/test_server_environment_data_encrypt.py b/server_environment_data_encryption/tests/test_server_environment_data_encrypt.py index d415f70..6a10549 100644 --- a/server_environment_data_encryption/tests/test_server_environment_data_encrypt.py +++ b/server_environment_data_encryption/tests/test_server_environment_data_encrypt.py @@ -2,6 +2,8 @@ from pathlib import Path +from lxml import etree + from odoo.addons.data_encryption.tests.common import CommonDataEncrypted @@ -12,11 +14,17 @@ class TestServerEnvDataEncrypted(CommonDataEncrypted): self.set_new_key_env("preprod") mixin_obj = self.env["server.env.mixin"] base_path = Path(__file__).parent / "fixtures" / "base.xml" - xml = base_path.read_text() + xml_str = base_path.read_text() + xml = etree.XML(xml_str) res_xml = mixin_obj._update_form_view_from_env(xml, "form") expected_xml_path = Path(__file__).parent / "fixtures" / "res1.xml" expected_xml = expected_xml_path.read_text() - self.assertEqual(res_xml, expected_xml) + # convert both to xml with parser removing space then convert to string to + # compare + parser = etree.XMLParser(remove_blank_text=True) + res_xml_str = etree.tostring(etree.XML(etree.tostring(res_xml), parser=parser)) + expected_xml_str = etree.tostring(etree.XML(expected_xml, parser=parser)) + self.assertEqual(res_xml_str, expected_xml_str) def test_dynamic_view_other_env(self): self.maxDiff = None @@ -24,10 +32,16 @@ class TestServerEnvDataEncrypted(CommonDataEncrypted): self.set_new_key_env("preprod") mixin_obj = self.env["server.env.mixin"] base_path = Path(__file__).parent / "fixtures" / "base.xml" - xml = base_path.read_text() + xml_str = base_path.read_text() + xml = etree.XML(xml_str) res_xml = mixin_obj.with_context(environment="prod")._update_form_view_from_env( xml, "form" ) expected_xml_path = Path(__file__).parent / "fixtures" / "res2.xml" expected_xml = expected_xml_path.read_text() - self.assertEqual(res_xml, expected_xml) + # convert both to xml with parser removing space then convert to string to + # compare + parser = etree.XMLParser(remove_blank_text=True) + res_xml_str = etree.tostring(etree.XML(etree.tostring(res_xml), parser=parser)) + expected_xml_str = etree.tostring(etree.XML(expected_xml, parser=parser)) + self.assertEqual(res_xml_str, expected_xml_str)