[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). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{ {
"name": "Server Environment Data Encryption", "name": "Server Environment Data Encryption",
"version": "14.0.1.0.2", "version": "16.0.1.0.0",
"development_status": "Alpha", "development_status": "Alpha",
"category": "Tools", "category": "Tools",
"website": "https://github.com/OCA/server-env", "website": "https://github.com/OCA/server-env",

View File

@ -175,29 +175,27 @@ class ServerEnvMixin(models.AbstractModel):
"configuration file" "configuration file"
) )
) )
doc = etree.XML(arch) node = arch.xpath("//sheet")
node = doc.xpath("//sheet")
if node: if node:
node = node[0] node = node[0]
elem = self._get_extra_environment_info_div(current_env, other_environments) elem = self._get_extra_environment_info_div(current_env, other_environments)
node.insert(0, elem) node.insert(0, elem)
if current_env != config.get("running_env"): if current_env != config.get("running_env"):
self._set_readonly_form_view(doc) self._set_readonly_form_view(arch)
arch = etree.tostring(doc, pretty_print=True, encoding="unicode")
else: else:
_logger.error("Missing sheet for form view on object {}".format(self._name)) _logger.error("Missing sheet for form view on object {}".format(self._name))
return arch return arch
@api.model @api.model
def fields_view_get( def _get_view(self, view_id=None, view_type="form", **options):
self, view_id=None, view_type="form", toolbar=False, submenu=False arch, view = super()._get_view(view_id=view_id, view_type=view_type, **options)
): arch = self._update_form_view_from_env(arch, view_type)
res = super().fields_view_get( return arch, view
view_id=view_id,
view_type=view_type, def _get_view_cache_key(self, view_id=None, view_type="form", **options):
toolbar=toolbar, res = super()._get_view_cache_key(
submenu=submenu, 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 return res

View File

@ -2,6 +2,8 @@
from pathlib import Path from pathlib import Path
from lxml import etree
from odoo.addons.data_encryption.tests.common import CommonDataEncrypted from odoo.addons.data_encryption.tests.common import CommonDataEncrypted
@ -12,11 +14,17 @@ class TestServerEnvDataEncrypted(CommonDataEncrypted):
self.set_new_key_env("preprod") self.set_new_key_env("preprod")
mixin_obj = self.env["server.env.mixin"] mixin_obj = self.env["server.env.mixin"]
base_path = Path(__file__).parent / "fixtures" / "base.xml" 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") res_xml = mixin_obj._update_form_view_from_env(xml, "form")
expected_xml_path = Path(__file__).parent / "fixtures" / "res1.xml" expected_xml_path = Path(__file__).parent / "fixtures" / "res1.xml"
expected_xml = expected_xml_path.read_text() 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): def test_dynamic_view_other_env(self):
self.maxDiff = None self.maxDiff = None
@ -24,10 +32,16 @@ class TestServerEnvDataEncrypted(CommonDataEncrypted):
self.set_new_key_env("preprod") self.set_new_key_env("preprod")
mixin_obj = self.env["server.env.mixin"] mixin_obj = self.env["server.env.mixin"]
base_path = Path(__file__).parent / "fixtures" / "base.xml" 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( res_xml = mixin_obj.with_context(environment="prod")._update_form_view_from_env(
xml, "form" xml, "form"
) )
expected_xml_path = Path(__file__).parent / "fixtures" / "res2.xml" expected_xml_path = Path(__file__).parent / "fixtures" / "res2.xml"
expected_xml = expected_xml_path.read_text() 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)