diff --git a/gvacommon/__init__.py b/gvacommon/__init__.py index c6fee22..f9aae42 100644 --- a/gvacommon/__init__.py +++ b/gvacommon/__init__.py @@ -15,4 +15,4 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # -__version__ = '0.2.1' +__version__ = '0.3.0' 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') + diff --git a/requirements/base.txt b/requirements/base.txt index 0297f2f..f7eaee2 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1 +1 @@ -Django>=1.9.1,<2 +Django>=1.9.2,<2