Fixed #12288 -- Validated that app names in INSTALLED_APPS are unique

This commit is contained in:
e0ne 2013-09-13 08:08:34 -04:00 committed by Tim Graham
parent ad6fcdb8d2
commit c1ec08998d
2 changed files with 7 additions and 3 deletions

View File

@ -109,8 +109,9 @@ class BaseSettings(object):
"to a tuple, not a string.")
elif name == "INSTALLED_APPS":
value = list(value) # force evaluation of generators on Python 3
if len(value) != len(set(value)):
raise ImproperlyConfigured("The INSTALLED_APPS setting must contain unique values.")
apps = [s.split('.')[-1] for s in value]
if len(value) != len(set(apps)):
raise ImproperlyConfigured("The INSTALLED_APPS setting must contain unique app names.")
object.__setattr__(self, name, value)

View File

@ -241,11 +241,14 @@ class UniqueSettingsTests(TestCase):
def test_unique(self):
"""
An ImproperlyConfigured exception is raised if the INSTALLED_APPS contains
any duplicate strings.
any duplicate appication names.
"""
with self.assertRaises(ImproperlyConfigured):
self.settings_module.INSTALLED_APPS = ("myApp1", "myApp1", "myApp2", "myApp3")
with self.assertRaises(ImproperlyConfigured):
self.settings_module.INSTALLED_APPS = ("package1.myApp1", "package2.myApp1")
class TrailingSlashURLTests(TestCase):
"""