Loading django/conf/__init__.py +3 −2 Original line number Diff line number Diff line Loading @@ -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) Loading tests/settings_tests/tests.py +4 −1 Original line number Diff line number Diff line Loading @@ -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): """ Loading Loading
django/conf/__init__.py +3 −2 Original line number Diff line number Diff line Loading @@ -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) Loading
tests/settings_tests/tests.py +4 −1 Original line number Diff line number Diff line Loading @@ -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): """ Loading