diff --git a/server_environment_config_settings/README.rst b/server_environment_config_settings/README.rst new file mode 100644 index 0000000..11f1088 --- /dev/null +++ b/server_environment_config_settings/README.rst @@ -0,0 +1,94 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +================================== +Server Environment Config Settings +================================== + +Override res.config.settings from server environment file. +Before using this module, you must be familiar with the +server_environment module. + +Installation +============ + +There is no specific installation instruction for this module. + +Configuration +============= + +To configure this module, you need to add a section ``[res.config.settings]`` to +you server_environment_files configurations, where the key should match the field +definition on `res.config.settings` model. + +Moreover, you have to add a dependency on server_environment_files module, to +the module where the field is defined. + +When the wizard is called, fields will be automatically filled with the value +defined in server_environment_files, and will be set as read only. + +For example you want to use google authentification so you define following +fields in server_environment_files: + +.. code:: + + [res.config.settings] + module_auth_oauth=True + auth_oauth_google_enabled=True + auth_oauth_google_client_id=dummy_key_for_google_oauth + + +Then, as some of these fields are defined in auth_oath modules, you should +add it to server_environment_files/__manifest__.py: + +.. code:: + + 'depends': ['base', + 'auth_oauth'] + + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/143/11.0 + +Known issues / Roadmap +====================== + +* Admin user has to execute the wizard for the values to be stored in the database. + +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. + +Credits +======= + +Images +------ + +* Odoo Community Association: `Icon `_. + +Contributors +------------ + +* Akim Juillerat + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +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. + +To contribute to this module, please visit https://odoo-community.org. diff --git a/server_environment_config_settings/__init__.py b/server_environment_config_settings/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/server_environment_config_settings/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/server_environment_config_settings/__manifest__.py b/server_environment_config_settings/__manifest__.py new file mode 100644 index 0000000..971b5ab --- /dev/null +++ b/server_environment_config_settings/__manifest__.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + 'name': 'Server Environment Config Settings', + 'summary': """ + Override config settings from server environment file""", + 'version': '11.0.1.0.0', + 'license': 'AGPL-3', + 'author': 'Camptocamp SA,Odoo Community Association (OCA)', + 'website': 'https://odoo-community.org/', + 'depends': [ + 'server_environment', + ], + 'auto_install': False, + 'installable': True +} diff --git a/server_environment_config_settings/models/__init__.py b/server_environment_config_settings/models/__init__.py new file mode 100644 index 0000000..0deb68c --- /dev/null +++ b/server_environment_config_settings/models/__init__.py @@ -0,0 +1 @@ +from . import res_config_settings diff --git a/server_environment_config_settings/models/res_config_settings.py b/server_environment_config_settings/models/res_config_settings.py new file mode 100644 index 0000000..3a2bfe9 --- /dev/null +++ b/server_environment_config_settings/models/res_config_settings.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +import json +from lxml import etree + +from odoo import models, api, _ +from odoo.exceptions import UserError +from odoo.addons.server_environment import serv_config + + +SECTION = 'res.config.settings' + + +class ResConfigSettings(models.TransientModel): + _inherit = 'res.config.settings' + + @api.model + def get_values(self): + res = super(ResConfigSettings, self).get_values() + if serv_config.has_section(SECTION): + for option in serv_config.options(SECTION): + value = res.get(option) + conf_value = serv_config.get(SECTION, option) + if not conf_value: + raise UserError( + _('Option %s is empty in server_environment_file') + % option) + if conf_value != value: + res[option] = conf_value + return res + + @api.model + def fields_view_get(self, view_id=None, view_type='form', toolbar=False, + submenu=False): + res = super(ResConfigSettings, self).fields_view_get( + view_id=view_id, view_type=view_type, toolbar=toolbar, + submenu=submenu) + if serv_config.has_section(SECTION): + doc = etree.XML(res['arch']) + for option in serv_config.options(SECTION): + for node in doc.xpath("//field[@name='%s']" % option): + node.set('readonly', '1') + modifiers = json.loads(node.get("modifiers")) + modifiers['readonly'] = True + node.set("modifiers", json.dumps(modifiers)) + + node.set('help', _('This field is managed through server ' + 'environment')) + res['arch'] = etree.tostring(doc, encoding='unicode') + return res