mirror of
https://github.com/django/django.git
synced 2025-07-04 17:59:13 +00:00
[soc2010/app-loading] check if there is more than one app with the same db_prefix
git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2010/app-loading@13597 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
2f027bf5dd
commit
5e17e835a0
@ -24,7 +24,6 @@ class App(object):
|
|||||||
def __init__(self, name):
|
def __init__(self, name):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.verbose_name = _(name.title())
|
self.verbose_name = _(name.title())
|
||||||
self.verbose_name_plural = _(name.title())
|
|
||||||
self.db_prefix = name
|
self.db_prefix = name
|
||||||
self.errors = []
|
self.errors = []
|
||||||
self.models = []
|
self.models = []
|
||||||
@ -97,6 +96,16 @@ class AppCache(object):
|
|||||||
% app_label)
|
% app_label)
|
||||||
for model in models.itervalues():
|
for model in models.itervalues():
|
||||||
app_instance.models.append(model)
|
app_instance.models.append(model)
|
||||||
|
# check if there is more than one app with the same
|
||||||
|
# db_prefix attribute
|
||||||
|
for app in self.app_instances:
|
||||||
|
for app_cmp in self.app_instances:
|
||||||
|
if app != app_cmp and \
|
||||||
|
app.db_prefix == app_cmp.db_prefix:
|
||||||
|
raise ImproperlyConfigured(
|
||||||
|
'The apps "%s" and "%s" have the same '
|
||||||
|
'db_prefix "%s"'
|
||||||
|
% (app, app_cmp, app.db_prefix))
|
||||||
self.loaded = True
|
self.loaded = True
|
||||||
self.unbound_models = {}
|
self.unbound_models = {}
|
||||||
finally:
|
finally:
|
||||||
|
@ -6,3 +6,7 @@ class MyApp(App):
|
|||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return '<MyApp: %s>' % self.name
|
return '<MyApp: %s>' % self.name
|
||||||
|
|
||||||
|
class MyOtherApp(MyApp):
|
||||||
|
def __init__(self, name):
|
||||||
|
super(MyOtherApp, self).__init__(name)
|
||||||
|
self.db_prefix = 'nomodel_app'
|
||||||
|
@ -97,6 +97,14 @@ class GetAppsTests(AppCacheTestCase):
|
|||||||
self.assertEqual(cache.get_apps(), [])
|
self.assertEqual(cache.get_apps(), [])
|
||||||
self.assertTrue(cache.app_cache_ready())
|
self.assertTrue(cache.app_cache_ready())
|
||||||
|
|
||||||
|
def test_db_prefix_exception(self):
|
||||||
|
"""
|
||||||
|
Test that an exception is raised if two app instances
|
||||||
|
have the same db_prefix attribute
|
||||||
|
"""
|
||||||
|
settings.INSTALLED_APPS = ('nomodel_app.MyApp', 'model_app.MyOtherApp',)
|
||||||
|
self.assertRaises(ImproperlyConfigured, cache.get_apps)
|
||||||
|
|
||||||
class GetAppTests(AppCacheTestCase):
|
class GetAppTests(AppCacheTestCase):
|
||||||
"""Tests for the get_app function"""
|
"""Tests for the get_app function"""
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user