summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2007-12-02 15:27:44 +0000
committerMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2007-12-02 15:27:44 +0000
commit81832f594d7b0d3b671bf12878a77f7a34fb2f04 (patch)
tree829dd4c63a2f44fa80ebf0588b88f0eb0578d9a8
parent49da9ab57e61e8b6d14ea72b5256555cb5c41cb5 (diff)
Fixed #5743 -- Tweaked the exceptions raised when importing settings so that we
cooperate with Python's standard help() function. Patch from ionut_bizau and Ben Slavin. git-svn-id: http://code.djangoproject.com/svn/django/trunk@6832 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/conf/__init__.py6
-rw-r--r--django/core/management/__init__.py4
-rw-r--r--django/newforms/fields.py2
-rw-r--r--docs/settings.txt6
4 files changed, 9 insertions, 9 deletions
diff --git a/django/conf/__init__.py b/django/conf/__init__.py
index 0177490df9..c24e87e6ed 100644
--- a/django/conf/__init__.py
+++ b/django/conf/__init__.py
@@ -52,7 +52,7 @@ class LazySettings(object):
if not settings_module: # If it's set but is an empty string.
raise KeyError
except KeyError:
- raise EnvironmentError, "Environment variable %s is undefined." % ENVIRONMENT_VARIABLE
+ raise ImportError, "Environment variable %s is undefined so settings cannot be imported." % ENVIRONMENT_VARIABLE # NOTE: This is arguably an EnvironmentError, but that causes problems with Python's interactive help
self._target = Settings(settings_module)
@@ -63,7 +63,7 @@ class LazySettings(object):
argument must support attribute access (__getattr__)).
"""
if self._target != None:
- raise EnvironmentError, 'Settings already configured.'
+ raise RuntimeError, 'Settings already configured.'
holder = UserSettingsHolder(default_settings)
for name, value in options.items():
setattr(holder, name, value)
@@ -82,7 +82,7 @@ class Settings(object):
try:
mod = __import__(self.SETTINGS_MODULE, {}, {}, [''])
except ImportError, e:
- raise EnvironmentError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e)
+ raise ImportError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e)
# Settings that should be converted into tuples if they're mistakenly entered
# as strings.
diff --git a/django/core/management/__init__.py b/django/core/management/__init__.py
index fcbc9d1110..04591479b3 100644
--- a/django/core/management/__init__.py
+++ b/django/core/management/__init__.py
@@ -84,7 +84,7 @@ def get_commands():
try:
from django.conf import settings
apps = settings.INSTALLED_APPS
- except (AttributeError, EnvironmentError):
+ except (AttributeError, ImportError):
apps = []
for app_name in apps:
@@ -99,7 +99,7 @@ def get_commands():
try:
from django.conf import settings
project_directory = setup_environ(__import__(settings.SETTINGS_MODULE))
- except (AttributeError, EnvironmentError, ImportError):
+ except (AttributeError, ImportError):
project_directory = None
if project_directory:
diff --git a/django/newforms/fields.py b/django/newforms/fields.py
index 845fb3519a..58f65ffde5 100644
--- a/django/newforms/fields.py
+++ b/django/newforms/fields.py
@@ -409,7 +409,7 @@ class EmailField(RegexField):
try:
from django.conf import settings
URL_VALIDATOR_USER_AGENT = settings.URL_VALIDATOR_USER_AGENT
-except (ImportError, EnvironmentError):
+except ImportError:
# It's OK if Django settings aren't configured.
URL_VALIDATOR_USER_AGENT = 'Django (http://www.djangoproject.com/)'
diff --git a/docs/settings.txt b/docs/settings.txt
index 79de2ad22f..3157a91dc3 100644
--- a/docs/settings.txt
+++ b/docs/settings.txt
@@ -1166,12 +1166,12 @@ If you're not setting the ``DJANGO_SETTINGS_MODULE`` environment variable, you
settings.
If you don't set ``DJANGO_SETTINGS_MODULE`` and don't call ``configure()``,
-Django will raise an ``EnvironmentError`` exception the first time a setting
+Django will raise an ``ImportError`` exception the first time a setting
is accessed.
If you set ``DJANGO_SETTINGS_MODULE``, access settings values somehow, *then*
-call ``configure()``, Django will raise an ``EnvironmentError`` saying settings
-have already been configured.
+call ``configure()``, Django will raise a ``RuntimeError`` indicating
+that settings have already been configured.
Also, it's an error to call ``configure()`` more than once, or to call
``configure()`` after any setting has been accessed.