+ """.format(
+ alert_type, alert_string, button_div
+ )
+ )
+ return elem
+
+ def _set_readonly_form_view(self, doc):
+ for field in doc.iter("field"):
+ env_fields = self._server_env_fields.keys()
+ field_name = field.get("name")
+ if field_name in env_fields:
+ continue
+ field.set("readonly", "1")
+ setup_modifiers(field, self.fields_get(field_name))
+
+ def _update_form_view_from_env(self, arch, view_type):
+ if view_type != "form":
+ return arch
+ current_env = self.env.context.get("environment") or config.get(
+ "running_env"
+ )
+ other_environments = [
+ key[15:]
+ for key, val in config.options.items()
+ if key.startswith("encryption_key_")
+ and val
+ and key[15:] != current_env
+ ]
+
+ if not current_env:
+ raise ValidationError(
+ _(
+ "you need to define the running_env entry in your odoo "
+ "configuration file"
+ )
+ )
+ doc = etree.XML(arch)
+ node = doc.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")
+ 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,
+ )
+ res["arch"] = self._update_form_view_from_env(res["arch"], view_type)
+ return res
diff --git a/server_environment_data_encryption/readme/CONFIGURE.rst b/server_environment_data_encryption/readme/CONFIGURE.rst
new file mode 100644
index 000000000..9d0ad4645
--- /dev/null
+++ b/server_environment_data_encryption/readme/CONFIGURE.rst
@@ -0,0 +1,24 @@
+In order to use this module properly, each environment should have their own encryption key
+and the production environment should have the keys of all environments.
+
+Example :
+Development environment ::
+
+ [options]
+ running_env=dev
+ encryption_key_dev=XXX
+
+Pre-production environment ::
+
+ [options]
+ running_env=preprod
+ encryption_key_preprod=YYY
+
+Production environment ::
+
+ [options]
+ running_env=prod
+ encryption_key_dev=XXX
+ encryption_key_preprod=YYY
+ encryption_key_prod=ZZZ
+
diff --git a/server_environment_data_encryption/readme/CONTRIBUTORS.rst b/server_environment_data_encryption/readme/CONTRIBUTORS.rst
new file mode 100644
index 000000000..86340ecd1
--- /dev/null
+++ b/server_environment_data_encryption/readme/CONTRIBUTORS.rst
@@ -0,0 +1,3 @@
+* Florian da Costa
+* Sébastien Beau
+* Benoît Guillot
diff --git a/server_environment_data_encryption/readme/DESCRIPTION.rst b/server_environment_data_encryption/readme/DESCRIPTION.rst
new file mode 100644
index 000000000..ebf414798
--- /dev/null
+++ b/server_environment_data_encryption/readme/DESCRIPTION.rst
@@ -0,0 +1,6 @@
+This module changes a little the behavior of server_environment modules.
+When Odoo does not find the value of the field in the configuration file,
+it will fallback on a Odoo encrypted field instead.
+Also it allows you
+to configure the environment dependent fields for all your environments
+from the production server.
diff --git a/server_environment_data_encryption/tests/__init__.py b/server_environment_data_encryption/tests/__init__.py
new file mode 100644
index 000000000..83ac8b859
--- /dev/null
+++ b/server_environment_data_encryption/tests/__init__.py
@@ -0,0 +1 @@
+from . import test_server_environment_data_encrypt
diff --git a/server_environment_data_encryption/tests/fixtures/base.xml b/server_environment_data_encryption/tests/fixtures/base.xml
new file mode 100644
index 000000000..524c95993
--- /dev/null
+++ b/server_environment_data_encryption/tests/fixtures/base.xml
@@ -0,0 +1,15 @@
+
diff --git a/server_environment_data_encryption/tests/fixtures/res1.xml b/server_environment_data_encryption/tests/fixtures/res1.xml
new file mode 100644
index 000000000..7ca515a86
--- /dev/null
+++ b/server_environment_data_encryption/tests/fixtures/res1.xml
@@ -0,0 +1,21 @@
+
diff --git a/server_environment_data_encryption/tests/fixtures/res2.xml b/server_environment_data_encryption/tests/fixtures/res2.xml
new file mode 100644
index 000000000..032e10881
--- /dev/null
+++ b/server_environment_data_encryption/tests/fixtures/res2.xml
@@ -0,0 +1,21 @@
+
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
new file mode 100644
index 000000000..4194626a3
--- /dev/null
+++ b/server_environment_data_encryption/tests/test_server_environment_data_encrypt.py
@@ -0,0 +1,32 @@
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from odoo.addons.data_encryption.tests.common import CommonDataEncrypted
+from pathlib import Path
+
+
+class TestServerEnvDataEncrypted(CommonDataEncrypted):
+
+ def test_dynamic_view_current_env(self):
+ self.maxDiff = None
+ self.set_new_key_env("prod")
+ 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()
+ 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)
+
+ def test_dynamic_view_other_env(self):
+ self.set_new_key_env("prod")
+ 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()
+ 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)
From e49788d359acd4ca0421e5cd3e9c79016c2ecde7 Mon Sep 17 00:00:00 2001
From: Florian da Costa
Date: Fri, 4 Oct 2019 19:57:19 +0200
Subject: [PATCH 02/38] [REF] Adapt method name after change is depency
---
server_environment_data_encryption/__manifest__.py | 3 ++-
.../models/server_env_mixin.py | 6 +++---
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/server_environment_data_encryption/__manifest__.py b/server_environment_data_encryption/__manifest__.py
index 8c57c4514..53ccd13fb 100644
--- a/server_environment_data_encryption/__manifest__.py
+++ b/server_environment_data_encryption/__manifest__.py
@@ -1,7 +1,8 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Server Environment Data Encryption",
- "version": "12.0.0.0.1",
+ "version": "12.0.1.0.0",
+ "development_status": 'Alpha',
"category": "Tools",
"website": "https://github.com/OCA/server-env",
"author": "Akretion, Odoo Community Association (OCA)",
diff --git a/server_environment_data_encryption/models/server_env_mixin.py b/server_environment_data_encryption/models/server_env_mixin.py
index 3845c4ebc..00066f87f 100644
--- a/server_environment_data_encryption/models/server_env_mixin.py
+++ b/server_environment_data_encryption/models/server_env_mixin.py
@@ -22,7 +22,7 @@ def _compute_server_env_from_default(self, field_name, options):
vals = (
self.env["encrypted.data"]
.sudo()
- ._get_json(encrypted_data_name, env=env)
+ ._encrypted_read_json(encrypted_data_name, env=env)
)
if vals.get(field_name):
self[field_name] = vals[field_name]
@@ -42,12 +42,12 @@ def _inverse_server_env(self, field_name):
for record in self:
if record[is_editable_field]:
encrypted_data_name = "%s,%s" % (record._name, record.id)
- values = encrypted_data_obj._get_json(
+ values = encrypted_data_obj._encrypted_read_json(
encrypted_data_name, env=env
)
new_val = {field_name: record[field_name]}
values.update(new_val)
- encrypted_data_obj._store_json(
+ encrypted_data_obj._encrypted_store_json(
encrypted_data_name, values, env=env
)
From 616adb8c3478d82b9b931d6718cacd96fb60edff Mon Sep 17 00:00:00 2001
From: Florian da Costa
Date: Fri, 4 Oct 2019 20:34:06 +0200
Subject: [PATCH 03/38] [FIX] Make sure the generated view is always the same
and the order of the button does not change randomly
---
.../models/server_env_mixin.py | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/server_environment_data_encryption/models/server_env_mixin.py b/server_environment_data_encryption/models/server_env_mixin.py
index 00066f87f..d969793fa 100644
--- a/server_environment_data_encryption/models/server_env_mixin.py
+++ b/server_environment_data_encryption/models/server_env_mixin.py
@@ -120,13 +120,17 @@ def _update_form_view_from_env(self, arch, view_type):
current_env = self.env.context.get("environment") or config.get(
"running_env"
)
- other_environments = [
+ # Important to keep this list sorted. It makes sure the button to
+ # switch environment will always be in the same order. (more user
+ # friendly) and the test would fail without it as the order could
+ # change randomly and the view would then also change randomly
+ other_environments = sorted([
key[15:]
for key, val in config.options.items()
if key.startswith("encryption_key_")
and val
and key[15:] != current_env
- ]
+ ])
if not current_env:
raise ValidationError(
From 2087d86d40a1491eed4f9e96464481d22fe462db Mon Sep 17 00:00:00 2001
From: oca-travis
Date: Sat, 28 Mar 2020 08:45:33 +0000
Subject: [PATCH 04/38] [UPD] Update server_environment_data_encryption.pot
---
.../server_environment_data_encryption.pot | 38 +++++++++++++++++++
1 file changed, 38 insertions(+)
create mode 100644 server_environment_data_encryption/i18n/server_environment_data_encryption.pot
diff --git a/server_environment_data_encryption/i18n/server_environment_data_encryption.pot b/server_environment_data_encryption/i18n/server_environment_data_encryption.pot
new file mode 100644
index 000000000..0acf17bc5
--- /dev/null
+++ b/server_environment_data_encryption/i18n/server_environment_data_encryption.pot
@@ -0,0 +1,38 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * server_environment_data_encryption
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 12.0\n"
+"Report-Msgid-Bugs-To: \n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: server_environment_data_encryption
+#: code:addons/server_environment_data_encryption/models/server_env_mixin.py:74
+#, python-format
+msgid "Define values for "
+msgstr ""
+
+#. module: server_environment_data_encryption
+#: model:ir.model,name:server_environment_data_encryption.model_server_env_mixin
+msgid "Mixin to add server environment in existing models"
+msgstr ""
+
+#. module: server_environment_data_encryption
+#: code:addons/server_environment_data_encryption/models/server_env_mixin.py:86
+#, python-format
+msgid "Modify values for {} environment"
+msgstr ""
+
+#. module: server_environment_data_encryption
+#: code:addons/server_environment_data_encryption/models/server_env_mixin.py:137
+#, python-format
+msgid "you need to define the running_env entry in your odoo configuration file"
+msgstr ""
+
From eb7491ac6e5ac467bad83b11fd92717ff5349ef9 Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Sat, 28 Mar 2020 08:50:05 +0000
Subject: [PATCH 05/38] [UPD] README.rst
---
server_environment_data_encryption/README.rst | 113 +++++
.../static/description/index.html | 459 ++++++++++++++++++
2 files changed, 572 insertions(+)
create mode 100644 server_environment_data_encryption/README.rst
create mode 100644 server_environment_data_encryption/static/description/index.html
diff --git a/server_environment_data_encryption/README.rst b/server_environment_data_encryption/README.rst
new file mode 100644
index 000000000..7b64980bc
--- /dev/null
+++ b/server_environment_data_encryption/README.rst
@@ -0,0 +1,113 @@
+==================================
+Server Environment Data Encryption
+==================================
+
+.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ !! This file is generated by oca-gen-addon-readme !!
+ !! changes will be overwritten. !!
+ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png
+ :target: https://odoo-community.org/page/development-status
+ :alt: Alpha
+.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
+ :alt: License: AGPL-3
+.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--env-lightgray.png?logo=github
+ :target: https://github.com/OCA/server-env/tree/12.0/server_environment_data_encryption
+ :alt: OCA/server-env
+.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
+ :target: https://translation.odoo-community.org/projects/server-env-12-0/server-env-12-0-server_environment_data_encryption
+ :alt: Translate me on Weblate
+.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
+ :target: https://runbot.odoo-community.org/runbot/254/12.0
+ :alt: Try me on Runbot
+
+|badge1| |badge2| |badge3| |badge4| |badge5|
+
+This module changes a little the behavior of server_environment modules.
+When Odoo does not find the value of the field in the configuration file,
+it will fallback on a Odoo encrypted field instead.
+Also it allows you
+to configure the environment dependent fields for all your environments
+from the production server.
+
+.. IMPORTANT::
+ This is an alpha version, the data model and design can change at any time without warning.
+ Only for development or testing purpose, do not use in production.
+ `More details on development status `_
+
+**Table of contents**
+
+.. contents::
+ :local:
+
+Configuration
+=============
+
+In order to use this module properly, each environment should have their own encryption key
+and the production environment should have the keys of all environments.
+
+Example :
+Development environment ::
+
+ [options]
+ running_env=dev
+ encryption_key_dev=XXX
+
+Pre-production environment ::
+
+ [options]
+ running_env=preprod
+ encryption_key_preprod=YYY
+
+Production environment ::
+
+ [options]
+ running_env=prod
+ encryption_key_dev=XXX
+ encryption_key_preprod=YYY
+ encryption_key_prod=ZZZ
+
+
+Bug Tracker
+===========
+
+Bugs are tracked on `GitHub Issues `_.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us smashing it by providing a detailed and welcomed
+`feedback `_.
+
+Do not contact contributors directly about support or help with technical issues.
+
+Credits
+=======
+
+Authors
+~~~~~~~
+
+* Akretion
+
+Contributors
+~~~~~~~~~~~~
+
+* Florian da Costa
+* Sébastien Beau
+* Benoît Guillot
+
+Maintainers
+~~~~~~~~~~~
+
+This module is maintained by the OCA.
+
+.. image:: https://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: https://odoo-community.org
+
+OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
+This module is part of the `OCA/server-env `_ project on GitHub.
+
+You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/server_environment_data_encryption/static/description/index.html b/server_environment_data_encryption/static/description/index.html
new file mode 100644
index 000000000..5bd6658eb
--- /dev/null
+++ b/server_environment_data_encryption/static/description/index.html
@@ -0,0 +1,459 @@
+
+
+
+
+
+
+Server Environment Data Encryption
+
+
+
+
+
Server Environment Data Encryption
+
+
+
+
This module changes a little the behavior of server_environment modules.
+When Odoo does not find the value of the field in the configuration file,
+it will fallback on a Odoo encrypted field instead.
+Also it allows you
+to configure the environment dependent fields for all your environments
+from the production server.
+
+
Important
+
This is an alpha version, the data model and design can change at any time without warning.
+Only for development or testing purpose, do not use in production.
+More details on development status
In order to use this module properly, each environment should have their own encryption key
+and the production environment should have the keys of all environments.
Bugs are tracked on GitHub Issues.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us smashing it by providing a detailed and welcomed
+feedback.
+
Do not contact contributors directly about support or help with technical issues.
OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+
This module is part of the OCA/server-env project on GitHub.
+
+
From 49ec41057754d94dad2183f84f2652c5bcf23931 Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Sat, 28 Mar 2020 08:50:05 +0000
Subject: [PATCH 06/38] [ADD] icon.png
---
.../static/description/icon.png | Bin 0 -> 9455 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 server_environment_data_encryption/static/description/icon.png
diff --git a/server_environment_data_encryption/static/description/icon.png b/server_environment_data_encryption/static/description/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d
GIT binary patch
literal 9455
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
z
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
Xviia!U7SGha1wx#SCgwmn*{w2TRX*I
literal 0
HcmV?d00001
From 7ba8206dace95570e169889a44de347b4985b685 Mon Sep 17 00:00:00 2001
From: Thomas Binsfeld
Date: Mon, 5 Oct 2020 14:04:48 +0200
Subject: [PATCH 07/38] [MIG] server_environment_data_encryption: migration to
13.0 (pre-commit)
---
.../__manifest__.py | 4 +-
.../models/server_env_mixin.py | 57 +++++++------------
.../readme/CONFIGURE.rst | 5 +-
.../test_server_environment_data_encrypt.py | 11 ++--
4 files changed, 31 insertions(+), 46 deletions(-)
diff --git a/server_environment_data_encryption/__manifest__.py b/server_environment_data_encryption/__manifest__.py
index 53ccd13fb..ce877483d 100644
--- a/server_environment_data_encryption/__manifest__.py
+++ b/server_environment_data_encryption/__manifest__.py
@@ -1,8 +1,8 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Server Environment Data Encryption",
- "version": "12.0.1.0.0",
- "development_status": 'Alpha',
+ "version": "13.0.1.0.0",
+ "development_status": "Alpha",
"category": "Tools",
"website": "https://github.com/OCA/server-env",
"author": "Akretion, Odoo Community Association (OCA)",
diff --git a/server_environment_data_encryption/models/server_env_mixin.py b/server_environment_data_encryption/models/server_env_mixin.py
index d969793fa..80261c0ce 100644
--- a/server_environment_data_encryption/models/server_env_mixin.py
+++ b/server_environment_data_encryption/models/server_env_mixin.py
@@ -1,12 +1,13 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import logging
-from odoo import api, models, _
-from odoo.exceptions import ValidationError
-from odoo.tools.config import config
+
from lxml import etree
from odoo.osv.orm import setup_modifiers
+from odoo import _, api, models
+from odoo.exceptions import ValidationError
+from odoo.tools.config import config
_logger = logging.getLogger(__name__)
@@ -17,7 +18,7 @@ class ServerEnvMixin(models.AbstractModel):
def _compute_server_env_from_default(self, field_name, options):
""" First return database encrypted value then default value """
self.ensure_one()
- encrypted_data_name = "%s,%s" % (self._name, self.id)
+ encrypted_data_name = "{},{}".format(self._name, self.id)
env = self.env.context.get("environment", None)
vals = (
self.env["encrypted.data"]
@@ -27,9 +28,7 @@ def _compute_server_env_from_default(self, field_name, options):
if vals.get(field_name):
self[field_name] = vals[field_name]
else:
- return super()._compute_server_env_from_default(
- field_name, options
- )
+ return super()._compute_server_env_from_default(field_name, options)
def _inverse_server_env(self, field_name):
"""
@@ -41,7 +40,7 @@ def _inverse_server_env(self, field_name):
env = self.env.context.get("environment", None)
for record in self:
if record[is_editable_field]:
- encrypted_data_name = "%s,%s" % (record._name, record.id)
+ encrypted_data_name = "{},{}".format(record._name, record.id)
values = encrypted_data_obj._encrypted_read_json(
encrypted_data_name, env=env
)
@@ -57,8 +56,7 @@ def action_change_env_data_encrypted_fields(self):
# We don't know which action we are using... take default one
action = self.get_formview_action()
else:
- action = self.env["ir.actions.act_window"].browse(
- action_id).read()[0]
+ action = self.env["ir.actions.act_window"].browse(action_id).read()[0]
action["view_mode"] = "form"
action["res_id"] = self.id
views_form = []
@@ -83,13 +81,9 @@ def _get_extra_environment_info_div(self, current_env, extra_envs):
)
button_div += "{}".format(button)
button_div += ""
- alert_string = _("Modify values for {} environment").format(
- current_env
- )
+ alert_string = _("Modify values for {} environment").format(current_env)
alert_type = (
- current_env == config.get("running_env")
- and "alert-info"
- or "alert-warning"
+ current_env == config.get("running_env") and "alert-info" or "alert-warning"
)
elem = etree.fromstring(
"""
@@ -117,20 +111,18 @@ def _set_readonly_form_view(self, doc):
def _update_form_view_from_env(self, arch, view_type):
if view_type != "form":
return arch
- current_env = self.env.context.get("environment") or config.get(
- "running_env"
- )
+ current_env = self.env.context.get("environment") or config.get("running_env")
# Important to keep this list sorted. It makes sure the button to
# switch environment will always be in the same order. (more user
# friendly) and the test would fail without it as the order could
# change randomly and the view would then also change randomly
- other_environments = sorted([
- key[15:]
- for key, val in config.options.items()
- if key.startswith("encryption_key_")
- and val
- and key[15:] != current_env
- ])
+ other_environments = sorted(
+ [
+ key[15:]
+ for key, val in config.options.items()
+ if key.startswith("encryption_key_") and val and key[15:] != current_env
+ ]
+ )
if not current_env:
raise ValidationError(
@@ -143,18 +135,14 @@ def _update_form_view_from_env(self, arch, view_type):
node = doc.xpath("//sheet")
if node:
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)
if current_env != config.get("running_env"):
self._set_readonly_form_view(doc)
arch = etree.tostring(doc, pretty_print=True, encoding="unicode")
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
@api.model
@@ -162,10 +150,7 @@ 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,
+ view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu,
)
res["arch"] = self._update_form_view_from_env(res["arch"], view_type)
return res
diff --git a/server_environment_data_encryption/readme/CONFIGURE.rst b/server_environment_data_encryption/readme/CONFIGURE.rst
index 9d0ad4645..37875faa3 100644
--- a/server_environment_data_encryption/readme/CONFIGURE.rst
+++ b/server_environment_data_encryption/readme/CONFIGURE.rst
@@ -1,7 +1,7 @@
In order to use this module properly, each environment should have their own encryption key
-and the production environment should have the keys of all environments.
+and the production environment should have the keys of all environments.
-Example :
+Example :
Development environment ::
[options]
@@ -21,4 +21,3 @@ Production environment ::
encryption_key_dev=XXX
encryption_key_preprod=YYY
encryption_key_prod=ZZZ
-
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 4194626a3..d415f70eb 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
@@ -1,11 +1,11 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
-from odoo.addons.data_encryption.tests.common import CommonDataEncrypted
from pathlib import Path
+from odoo.addons.data_encryption.tests.common import CommonDataEncrypted
-class TestServerEnvDataEncrypted(CommonDataEncrypted):
+class TestServerEnvDataEncrypted(CommonDataEncrypted):
def test_dynamic_view_current_env(self):
self.maxDiff = None
self.set_new_key_env("prod")
@@ -19,14 +19,15 @@ def test_dynamic_view_current_env(self):
self.assertEqual(res_xml, expected_xml)
def test_dynamic_view_other_env(self):
+ self.maxDiff = None
self.set_new_key_env("prod")
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()
- res_xml = mixin_obj.with_context(
- environment="prod"
- )._update_form_view_from_env(xml, "form")
+ 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)
From 2d6e4bce5345368e627f780e9643ae0618c8f954 Mon Sep 17 00:00:00 2001
From: Thomas Binsfeld
Date: Mon, 5 Oct 2020 14:07:58 +0200
Subject: [PATCH 08/38] [MIG] server_environment_data_encryption to 13.0
---
server_environment_data_encryption/models/server_env_mixin.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/server_environment_data_encryption/models/server_env_mixin.py b/server_environment_data_encryption/models/server_env_mixin.py
index 80261c0ce..5a3c5b973 100644
--- a/server_environment_data_encryption/models/server_env_mixin.py
+++ b/server_environment_data_encryption/models/server_env_mixin.py
@@ -1,9 +1,9 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+import json
import logging
from lxml import etree
-from odoo.osv.orm import setup_modifiers
from odoo import _, api, models
from odoo.exceptions import ValidationError
@@ -106,7 +106,7 @@ def _set_readonly_form_view(self, doc):
if field_name in env_fields:
continue
field.set("readonly", "1")
- setup_modifiers(field, self.fields_get(field_name))
+ field.set("modifiers", json.dumps({"readonly": True}))
def _update_form_view_from_env(self, arch, view_type):
if view_type != "form":
From 9c5b69fcc0c59fcb69daf765492616cba270bfae Mon Sep 17 00:00:00 2001
From: Mourad
Date: Mon, 12 Oct 2020 14:07:41 +0200
Subject: [PATCH 09/38] [IMP] server_environment_data_encryption,
data_encryption: black, isort, prettier
---
.../models/server_env_mixin.py | 9 ++--
.../tests/fixtures/base.xml | 21 ++++++---
.../tests/fixtures/res1.xml | 46 +++++++++++++-----
.../tests/fixtures/res2.xml | 47 ++++++++++++++-----
4 files changed, 89 insertions(+), 34 deletions(-)
diff --git a/server_environment_data_encryption/models/server_env_mixin.py b/server_environment_data_encryption/models/server_env_mixin.py
index 5a3c5b973..c008577d8 100644
--- a/server_environment_data_encryption/models/server_env_mixin.py
+++ b/server_environment_data_encryption/models/server_env_mixin.py
@@ -32,8 +32,8 @@ def _compute_server_env_from_default(self, field_name, options):
def _inverse_server_env(self, field_name):
"""
- When this module is installed, we store values into encrypted data
- env instead of a default field in database (not env dependent).
+ When this module is installed, we store values into encrypted data
+ env instead of a default field in database (not env dependent).
"""
is_editable_field = self._server_env_is_editable_fieldname(field_name)
encrypted_data_obj = self.env["encrypted.data"].sudo()
@@ -150,7 +150,10 @@ 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,
+ view_id=view_id,
+ view_type=view_type,
+ toolbar=toolbar,
+ submenu=submenu,
)
res["arch"] = self._update_form_view_from_env(res["arch"], view_type)
return res
diff --git a/server_environment_data_encryption/tests/fixtures/base.xml b/server_environment_data_encryption/tests/fixtures/base.xml
index 524c95993..11f2eb797 100644
--- a/server_environment_data_encryption/tests/fixtures/base.xml
+++ b/server_environment_data_encryption/tests/fixtures/base.xml
@@ -1,15 +1,22 @@
diff --git a/server_environment_data_encryption/tests/fixtures/res1.xml b/server_environment_data_encryption/tests/fixtures/res1.xml
index 7ca515a86..60966da87 100644
--- a/server_environment_data_encryption/tests/fixtures/res1.xml
+++ b/server_environment_data_encryption/tests/fixtures/res1.xml
@@ -1,21 +1,43 @@
diff --git a/server_environment_data_encryption/tests/fixtures/res2.xml b/server_environment_data_encryption/tests/fixtures/res2.xml
index 032e10881..d78832058 100644
--- a/server_environment_data_encryption/tests/fixtures/res2.xml
+++ b/server_environment_data_encryption/tests/fixtures/res2.xml
@@ -1,21 +1,44 @@
From 0eea800b288efabf650dde439fd61d98cc3d4dd0 Mon Sep 17 00:00:00 2001
From: Mourad
Date: Mon, 12 Oct 2020 15:32:19 +0200
Subject: [PATCH 10/38] [MIG] server_environment_data_encryption,
data_encryption: Migration to 14.0
note: exclude tests/fixtures from pre-commit check
---
.../__manifest__.py | 2 +-
.../tests/fixtures/res1.xml | 46 +++++-------------
.../tests/fixtures/res2.xml | 47 +++++--------------
3 files changed, 25 insertions(+), 70 deletions(-)
diff --git a/server_environment_data_encryption/__manifest__.py b/server_environment_data_encryption/__manifest__.py
index ce877483d..c7e8e2258 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": "13.0.1.0.0",
+ "version": "14.0.1.0.0",
"development_status": "Alpha",
"category": "Tools",
"website": "https://github.com/OCA/server-env",
diff --git a/server_environment_data_encryption/tests/fixtures/res1.xml b/server_environment_data_encryption/tests/fixtures/res1.xml
index 60966da87..7ca515a86 100644
--- a/server_environment_data_encryption/tests/fixtures/res1.xml
+++ b/server_environment_data_encryption/tests/fixtures/res1.xml
@@ -1,43 +1,21 @@
diff --git a/server_environment_data_encryption/tests/fixtures/res2.xml b/server_environment_data_encryption/tests/fixtures/res2.xml
index d78832058..032e10881 100644
--- a/server_environment_data_encryption/tests/fixtures/res2.xml
+++ b/server_environment_data_encryption/tests/fixtures/res2.xml
@@ -1,44 +1,21 @@
From 61b3accb25f32c3b971beb33dbb5d419944071f0 Mon Sep 17 00:00:00 2001
From: oca-travis
Date: Fri, 5 Mar 2021 10:42:51 +0000
Subject: [PATCH 11/38] [UPD] Update server_environment_data_encryption.pot
---
.../server_environment_data_encryption.pot | 31 ++++++++++++++-----
1 file changed, 23 insertions(+), 8 deletions(-)
diff --git a/server_environment_data_encryption/i18n/server_environment_data_encryption.pot b/server_environment_data_encryption/i18n/server_environment_data_encryption.pot
index 0acf17bc5..ecde6385b 100644
--- a/server_environment_data_encryption/i18n/server_environment_data_encryption.pot
+++ b/server_environment_data_encryption/i18n/server_environment_data_encryption.pot
@@ -1,12 +1,12 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
-# * server_environment_data_encryption
+# * server_environment_data_encryption
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 12.0\n"
+"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
-"Last-Translator: <>\n"
+"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -14,25 +14,40 @@ msgstr ""
"Plural-Forms: \n"
#. module: server_environment_data_encryption
-#: code:addons/server_environment_data_encryption/models/server_env_mixin.py:74
+#: code:addons/server_environment_data_encryption/models/server_env_mixin.py:0
#, python-format
msgid "Define values for "
msgstr ""
+#. module: server_environment_data_encryption
+#: model:ir.model.fields,field_description:server_environment_data_encryption.field_server_env_mixin__display_name
+msgid "Display Name"
+msgstr ""
+
+#. module: server_environment_data_encryption
+#: model:ir.model.fields,field_description:server_environment_data_encryption.field_server_env_mixin__id
+msgid "ID"
+msgstr ""
+
+#. module: server_environment_data_encryption
+#: model:ir.model.fields,field_description:server_environment_data_encryption.field_server_env_mixin____last_update
+msgid "Last Modified on"
+msgstr ""
+
#. module: server_environment_data_encryption
#: model:ir.model,name:server_environment_data_encryption.model_server_env_mixin
msgid "Mixin to add server environment in existing models"
msgstr ""
#. module: server_environment_data_encryption
-#: code:addons/server_environment_data_encryption/models/server_env_mixin.py:86
+#: code:addons/server_environment_data_encryption/models/server_env_mixin.py:0
#, python-format
msgid "Modify values for {} environment"
msgstr ""
#. module: server_environment_data_encryption
-#: code:addons/server_environment_data_encryption/models/server_env_mixin.py:137
+#: code:addons/server_environment_data_encryption/models/server_env_mixin.py:0
#, python-format
-msgid "you need to define the running_env entry in your odoo configuration file"
+msgid ""
+"you need to define the running_env entry in your odoo configuration file"
msgstr ""
-
From c18db4b666223f6986d79135621c2d03879a9e78 Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Fri, 5 Mar 2021 10:47:35 +0000
Subject: [PATCH 12/38] [UPD] README.rst
---
server_environment_data_encryption/README.rst | 15 +++++++--------
.../static/description/index.html | 6 +++---
2 files changed, 10 insertions(+), 11 deletions(-)
diff --git a/server_environment_data_encryption/README.rst b/server_environment_data_encryption/README.rst
index 7b64980bc..4a3f96297 100644
--- a/server_environment_data_encryption/README.rst
+++ b/server_environment_data_encryption/README.rst
@@ -14,13 +14,13 @@ Server Environment Data Encryption
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--env-lightgray.png?logo=github
- :target: https://github.com/OCA/server-env/tree/12.0/server_environment_data_encryption
+ :target: https://github.com/OCA/server-env/tree/14.0/server_environment_data_encryption
:alt: OCA/server-env
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/server-env-12-0/server-env-12-0-server_environment_data_encryption
+ :target: https://translation.odoo-community.org/projects/server-env-14-0/server-env-14-0-server_environment_data_encryption
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/254/12.0
+ :target: https://runbot.odoo-community.org/runbot/254/14.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -46,9 +46,9 @@ Configuration
=============
In order to use this module properly, each environment should have their own encryption key
-and the production environment should have the keys of all environments.
+and the production environment should have the keys of all environments.
-Example :
+Example :
Development environment ::
[options]
@@ -69,14 +69,13 @@ Production environment ::
encryption_key_preprod=YYY
encryption_key_prod=ZZZ
-
Bug Tracker
===========
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -108,6 +107,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-This module is part of the `OCA/server-env `_ project on GitHub.
+This module is part of the `OCA/server-env `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/server_environment_data_encryption/static/description/index.html b/server_environment_data_encryption/static/description/index.html
index 5bd6658eb..bd00ca030 100644
--- a/server_environment_data_encryption/static/description/index.html
+++ b/server_environment_data_encryption/static/description/index.html
@@ -367,7 +367,7 @@
Server Environment Data Encryption
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
+
This module changes a little the behavior of server_environment modules.
When Odoo does not find the value of the field in the configuration file,
it will fallback on a Odoo encrypted field instead.
@@ -424,7 +424,7 @@
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-feedback.
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-
This module is part of the OCA/server-env project on GitHub.
+
This module is part of the OCA/server-env project on GitHub.
-
-
-
+
+
+
From 4ffe9e92376421364b0544b5bfdb1f4c7379f520 Mon Sep 17 00:00:00 2001
From: Florian da Costa
Date: Sun, 9 Oct 2022 17:02:14 +0200
Subject: [PATCH 22/38] [16][MIG] Migration of
server_environment_data_encryption
---
.../__manifest__.py | 2 +-
.../models/server_env_mixin.py | 24 +++++++++----------
.../test_server_environment_data_encrypt.py | 22 +++++++++++++----
3 files changed, 30 insertions(+), 18 deletions(-)
diff --git a/server_environment_data_encryption/__manifest__.py b/server_environment_data_encryption/__manifest__.py
index 065e3fc73..97755ce0f 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 11ada9f5a..7cde5ffac 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 @@ def _update_form_view_from_env(self, arch, view_type):
"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 d415f70eb..6a105497c 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 @@ def test_dynamic_view_current_env(self):
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 @@ def test_dynamic_view_other_env(self):
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)
From 39bd6eeab6977784c122e5e8154b29169c53155c Mon Sep 17 00:00:00 2001
From: oca-ci
Date: Tue, 25 Oct 2022 15:26:02 +0000
Subject: [PATCH 23/38] [UPD] Update server_environment_data_encryption.pot
---
.../i18n/server_environment_data_encryption.pot | 17 +----------------
1 file changed, 1 insertion(+), 16 deletions(-)
diff --git a/server_environment_data_encryption/i18n/server_environment_data_encryption.pot b/server_environment_data_encryption/i18n/server_environment_data_encryption.pot
index b53f2f0e7..ab7579785 100644
--- a/server_environment_data_encryption/i18n/server_environment_data_encryption.pot
+++ b/server_environment_data_encryption/i18n/server_environment_data_encryption.pot
@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 14.0\n"
+"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
@@ -19,21 +19,6 @@ msgstr ""
msgid "Define values for "
msgstr ""
-#. module: server_environment_data_encryption
-#: model:ir.model.fields,field_description:server_environment_data_encryption.field_server_env_mixin__display_name
-msgid "Display Name"
-msgstr ""
-
-#. module: server_environment_data_encryption
-#: model:ir.model.fields,field_description:server_environment_data_encryption.field_server_env_mixin__id
-msgid "ID"
-msgstr ""
-
-#. module: server_environment_data_encryption
-#: model:ir.model.fields,field_description:server_environment_data_encryption.field_server_env_mixin____last_update
-msgid "Last Modified on"
-msgstr ""
-
#. module: server_environment_data_encryption
#: model:ir.model,name:server_environment_data_encryption.model_server_env_mixin
msgid "Mixin to add server environment in existing models"
From 2892f5e0e9dac20606ed63fcc21b9ca1123d4072 Mon Sep 17 00:00:00 2001
From: OCA-git-bot
Date: Tue, 25 Oct 2022 15:27:56 +0000
Subject: [PATCH 24/38] [UPD] README.rst
---
server_environment_data_encryption/README.rst | 10 +++++-----
.../static/description/index.html | 6 +++---
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/server_environment_data_encryption/README.rst b/server_environment_data_encryption/README.rst
index 4a3f96297..5e7c751ab 100644
--- a/server_environment_data_encryption/README.rst
+++ b/server_environment_data_encryption/README.rst
@@ -14,13 +14,13 @@ Server Environment Data Encryption
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--env-lightgray.png?logo=github
- :target: https://github.com/OCA/server-env/tree/14.0/server_environment_data_encryption
+ :target: https://github.com/OCA/server-env/tree/16.0/server_environment_data_encryption
:alt: OCA/server-env
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
- :target: https://translation.odoo-community.org/projects/server-env-14-0/server-env-14-0-server_environment_data_encryption
+ :target: https://translation.odoo-community.org/projects/server-env-16-0/server-env-16-0-server_environment_data_encryption
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
- :target: https://runbot.odoo-community.org/runbot/254/14.0
+ :target: https://runbot.odoo-community.org/runbot/254/16.0
:alt: Try me on Runbot
|badge1| |badge2| |badge3| |badge4| |badge5|
@@ -75,7 +75,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues `_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-`feedback `_.
+`feedback `_.
Do not contact contributors directly about support or help with technical issues.
@@ -107,6 +107,6 @@ OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-This module is part of the `OCA/server-env `_ project on GitHub.
+This module is part of the `OCA/server-env `_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
diff --git a/server_environment_data_encryption/static/description/index.html b/server_environment_data_encryption/static/description/index.html
index bd00ca030..41c85b2a7 100644
--- a/server_environment_data_encryption/static/description/index.html
+++ b/server_environment_data_encryption/static/description/index.html
@@ -367,7 +367,7 @@
Server Environment Data Encryption
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
-
+
This module changes a little the behavior of server_environment modules.
When Odoo does not find the value of the field in the configuration file,
it will fallback on a Odoo encrypted field instead.
@@ -424,7 +424,7 @@
Bugs are tracked on GitHub Issues.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
-feedback.
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
-
This module is part of the OCA/server-env project on GitHub.
+
This module is part of the OCA/server-env project on GitHub.