Fixed #21871 -- Fixed Apps.is_installed() for apps with custom label.

Thanks Aymeric for design discussion.
This commit is contained in:
Carl Meyer 2014-01-24 20:07:14 -07:00
parent f5f556dba3
commit 29ddae7436
3 changed files with 3 additions and 2 deletions

View File

@ -204,8 +204,7 @@ class Apps(object):
It's safe to call this method at import time, even while the registry It's safe to call this method at import time, even while the registry
is being populated. It returns False for apps that aren't loaded yet. is being populated. It returns False for apps that aren't loaded yet.
""" """
app_config = self.app_configs.get(app_name.rpartition(".")[2]) return any(ac.name == app_name for ac in self.app_configs.values())
return app_config is not None and app_config.name == app_name
def get_containing_app_config(self, object_name): def get_containing_app_config(self, object_name):
""" """

View File

@ -10,6 +10,7 @@ class MyAdmin(AppConfig):
class MyAuth(AppConfig): class MyAuth(AppConfig):
name = 'django.contrib.auth' name = 'django.contrib.auth'
label = 'myauth'
verbose_name = "All your password are belong to us." verbose_name = "All your password are belong to us."

View File

@ -109,6 +109,7 @@ class AppsTests(TestCase):
@override_settings(INSTALLED_APPS=SOME_INSTALLED_APPS) @override_settings(INSTALLED_APPS=SOME_INSTALLED_APPS)
def test_is_installed(self): def test_is_installed(self):
self.assertTrue(apps.is_installed('django.contrib.admin')) self.assertTrue(apps.is_installed('django.contrib.admin'))
self.assertTrue(apps.is_installed('django.contrib.auth'))
self.assertTrue(apps.is_installed('django.contrib.staticfiles')) self.assertTrue(apps.is_installed('django.contrib.staticfiles'))
self.assertFalse(apps.is_installed('django.contrib.webdesign')) self.assertFalse(apps.is_installed('django.contrib.webdesign'))