summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAymeric Augustin <aymeric.augustin@m4x.org>2011-11-27 20:13:37 +0000
committerAymeric Augustin <aymeric.augustin@m4x.org>2011-11-27 20:13:37 +0000
commit7872fc0dab2ad9971fb044b73ff33980aa4e7381 (patch)
tree12c6f0568374f14238fbead82815443d03157fd6
parent33a52cde08ef7ab8ba8990d40646d0dc2a8482df (diff)
Fixed #16247 -- Removed wildcard expansion of application names in INSTALLED_APPS.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17158 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/conf/__init__.py17
-rw-r--r--docs/releases/1.4.txt13
2 files changed, 13 insertions, 17 deletions
diff --git a/django/conf/__init__.py b/django/conf/__init__.py
index 3b829ce75b..8fff20248f 100644
--- a/django/conf/__init__.py
+++ b/django/conf/__init__.py
@@ -102,23 +102,6 @@ class Settings(BaseSettings):
setting_value = (setting_value,) # In case the user forgot the comma.
setattr(self, setting, setting_value)
- # Expand entries in INSTALLED_APPS like "django.contrib.*" to a list
- # of all those apps.
- new_installed_apps = []
- for app in self.INSTALLED_APPS:
- if app.endswith('.*'):
- app_mod = importlib.import_module(app[:-2])
- appdir = os.path.dirname(app_mod.__file__)
- app_subdirs = os.listdir(appdir)
- app_subdirs.sort()
- name_pattern = re.compile(r'[a-zA-Z]\w*')
- for d in app_subdirs:
- if name_pattern.match(d) and os.path.isdir(os.path.join(appdir, d)):
- new_installed_apps.append('%s.%s' % (app[:-2], d))
- else:
- new_installed_apps.append(app)
- self.INSTALLED_APPS = new_installed_apps
-
if hasattr(time, 'tzset') and self.TIME_ZONE:
# When we can, attempt to validate the timezone. If we can't find
# this file, no check happens and it's harmless.
diff --git a/docs/releases/1.4.txt b/docs/releases/1.4.txt
index 10cbe3dba9..ea7038430c 100644
--- a/docs/releases/1.4.txt
+++ b/docs/releases/1.4.txt
@@ -953,3 +953,16 @@ Session cookies now include the ``httponly`` attribute by default to
help reduce the impact of potential XSS attacks. For strict backwards
compatibility, use ``SESSION_COOKIE_HTTPONLY = False`` in settings.
+Wildcard expansion of application names in `INSTALLED_APPS`
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Until Django 1.3, :setting:`INSTALLED_APPS` accepted wildcards in application
+names, like ``django.contrib.*``. The expansion was performed by a
+filesystem-based implementation of ``from <package> import *``. Unfortunately,
+`this can't be done reliably`_.
+
+This behavior was never documented. Since it is un-pythonic and not obviously
+useful, it was removed in Django 1.4. If you relied on it, you must edit your
+settings file to list all your applications explicitly.
+
+.. _this can't be done reliably: http://docs.python.org/tutorial/modules.html#importing-from-a-package