From 58cb79c95a2282694626452dc6c491b1ccfb9fec Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sun, 26 Aug 2018 05:06:53 -0400 Subject: [PATCH] Interpret environment variables as YAML. Signed-off-by: Roberto Rosario --- mayan/apps/smart_settings/classes.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/mayan/apps/smart_settings/classes.py b/mayan/apps/smart_settings/classes.py index 301e818fa9..0436200106 100644 --- a/mayan/apps/smart_settings/classes.py +++ b/mayan/apps/smart_settings/classes.py @@ -139,6 +139,7 @@ class Setting(object): self.loaded = False self.namespace = namespace self.quoted = quoted + self.environment_variable = False namespace._settings.append(self) self.__class__._registry[global_name] = self @@ -148,7 +149,16 @@ class Setting(object): 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) + self.environment_variable = True + try: + self.raw_value = yaml.safe_load(environment_value) + except yaml.YAMLError as exception: + raise type(exception)( + 'Error interpreting environment variable: {} with ' + 'value: {}; {}'.format( + self.global_name, environment_value, exception + ) + ) else: self.raw_value = getattr(settings, self.global_name, self.default) self.yaml = Setting.serialize_value(self.raw_value)