[16][MIG] Migration of server_environment_data_encryption

This commit is contained in:
Florian da Costa 2022-10-09 17:02:14 +02:00
parent ff4aa12cc0
commit 826754ddc3
3 changed files with 30 additions and 18 deletions

View File

@ -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",

View File

@ -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

View File

@ -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)