From 473fcfffa2603e884d6bd2410190a6641321507b Mon Sep 17 00:00:00 2001 From: Jan Dittberner Date: Mon, 1 Feb 2016 23:06:55 +0100 Subject: [PATCH] Add gvacommon.settings_utils This commit adds a get_env_variable function that is taken from gva's settings.base module into a new module gvacommon.settings_utils. --- gvacommon/settings_utils.py | 38 ++++++++++++++++++++++++ gvacommon/tests/test_settings_utils.py | 40 ++++++++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 gvacommon/settings_utils.py create mode 100644 gvacommon/tests/test_settings_utils.py diff --git a/gvacommon/settings_utils.py b/gvacommon/settings_utils.py new file mode 100644 index 0000000..6c86b82 --- /dev/null +++ b/gvacommon/settings_utils.py @@ -0,0 +1,38 @@ +# +# gvacommon - common parts of gnuviechadmin +# Copyright (C) 2016 Jan Dittberner +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from os import environ +# Normally you should not import ANYTHING from Django directly +# into your settings, but ImproperlyConfigured is an exception. +from django.core.exceptions import ImproperlyConfigured + + +def get_env_variable(var_name): + """ + Get a setting from an environment variable. + + :param str var_name: variable name + :raises ImproperlyConfigured: if the environment setting is not defined + :return: environment setting value + :rtype: str + """ + try: + return environ[var_name] + except KeyError: + error_msg = "Set the %s environment variable" % var_name + raise ImproperlyConfigured(error_msg) diff --git a/gvacommon/tests/test_settings_utils.py b/gvacommon/tests/test_settings_utils.py new file mode 100644 index 0000000..1abc16c --- /dev/null +++ b/gvacommon/tests/test_settings_utils.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +# +# gvacommon - common parts of gnuviechadmin +# Copyright (C) 2016 Jan Dittberner +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +import os +from unittest import TestCase + +from django.core.exceptions import ImproperlyConfigured + +from gvacommon.settings_utils import get_env_variable + + +class GetEnvVariableTest(TestCase): + + def test_get_existing_env_variable(self): + os.environ['testvariable'] = 'myvalue' + self.assertEqual(get_env_variable('testvariable'), 'myvalue') + + def test_get_missing_env_variable(self): + if 'missingvariable' in os.environ: + del os.environ['missingvariable'] + with self.assertRaises(ImproperlyConfigured) as e: + get_env_variable('missingvariable') + self.assertEqual( + str(e.exception), 'Set the missingvariable environment variable') +