Add support for updating configuration options from environment variables.

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2017-06-18 03:08:03 -04:00
parent bcf835cd03
commit a105fe46a5
3 changed files with 13 additions and 1 deletions

View File

@@ -7,6 +7,7 @@ XX (2017-XX-XX)
- Fix repeated permission list API URL. GitLab issue #389. - Fix repeated permission list API URL. GitLab issue #389.
- Fix role creation API endpoint not returning id. GitLab issue #390. - Fix role creation API endpoint not returning id. GitLab issue #390.
- Make tags, metadata types and cabinets searchable via the dynamic search API. GitLab issue #344. - Make tags, metadata types and cabinets searchable via the dynamic search API. GitLab issue #344.
- Add support for updating configuration options from environment variables.
2.3 (2017-06-08) 2.3 (2017-06-08)
================ ================

View File

@@ -10,3 +10,9 @@ the directory: ``/usr/share/mayan-edms/mayan/settings/local.py``.
For a list of all the configuration options, go to "Setup" then "Settings" on For a list of all the configuration options, go to "Setup" then "Settings" on
your browser. This is also a good place to check if your overrided setting your browser. This is also a good place to check if your overrided setting
option value in your ``local.py`` file is being interpreted correctly. option value in your ``local.py`` file is being interpreted correctly.
Settings can also be changed via environment variables by prepending the string
"MAYAN_" to the configuration name. For example, to change the number of documents
displayed per page (COMMON_PAGINATE_BY, by default 40), use::
MAYAN_COMMON_PAGINATE_BY=10

View File

@@ -2,6 +2,7 @@ from __future__ import unicode_literals
from importlib import import_module from importlib import import_module
import logging import logging
import os
import yaml import yaml
@@ -85,6 +86,10 @@ class Setting(object):
return unicode(self.global_name) return unicode(self.global_name)
def cache_value(self): def cache_value(self):
environment_value = os.environ.get('MAYAN_{}'.format(self.global_name))
if environment_value:
self.raw_value = yaml.safe_load(environment_value)
else:
self.raw_value = getattr(settings, self.global_name, self.default) self.raw_value = getattr(settings, self.global_name, self.default)
self.yaml = Setting.serialize_value(self.raw_value) self.yaml = Setting.serialize_value(self.raw_value)
self.loaded = True self.loaded = True