From 64c3e29b7393b295f2067f114d67320cb7bd39ca Mon Sep 17 00:00:00 2001 From: Guewen Baconnier Date: Thu, 19 Jul 2018 18:01:19 +0200 Subject: [PATCH] Use a dictionary to configure the fields --- server_environment/models/server_env_mixin.py | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/server_environment/models/server_env_mixin.py b/server_environment/models/server_env_mixin.py index 6184f4b..95f6959 100644 --- a/server_environment/models/server_env_mixin.py +++ b/server_environment/models/server_env_mixin.py @@ -24,7 +24,7 @@ class ServerEnvMixin(models.AbstractModel): @property def _server_env_fields(self): - return {"directory_path": 'get'} + return {"directory_path": {'getter': 'get'}} With the snippet above, the "storage.backend" model now uses a server environment configuration for the field ``directory_path``. @@ -56,9 +56,16 @@ class ServerEnvMixin(models.AbstractModel): """Dict of fields to replace by fields computed from env To override in models. The dictionary is: - {'name_of_the_field': 'name_of_the_configparser_getter'} + {'name_of_the_field': options} - The configparser getter can be one of: get, getbool, getint + Where ``options`` is a dictionary:: + + options = { + "getter": "getint", + } + + The configparser getter can be one of: get, getbool, getint. + If options is an empty dict, "get" is used. Example:: @@ -66,10 +73,14 @@ class ServerEnvMixin(models.AbstractModel): def _server_env_fields(self): base_fields = super()._server_env_fields sftp_fields = { - "sftp_server": "get", - "sftp_port": "getint", - "sftp_login": "get", - "sftp_password": "get", + "sftp_server": { + "getter": "get", + }, + "sftp_port": { + "getter": "getint", + },, + "sftp_login": {}, + "sftp_password": {}, } sftp_fields.update(base_fields) return sftp_fields @@ -111,11 +122,11 @@ class ServerEnvMixin(models.AbstractModel): read from the ``_env_default`` field from database. """ for record in self: - for field_name, getter_name in record._server_env_fields.items(): + for field_name, options in record._server_env_fields.items(): section_name = record._server_env_section_name() if (section_name in serv_config and field_name in serv_config[section_name]): - + getter_name = options.get('getter', 'get') value = record._server_env_read_from_config( section_name, field_name, getter_name )