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