Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Rolled back r16510, r16513 and r16514 because it wasn't ready.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16515 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 89c302cf3f63f35161bdb2c09c849b30f35136e2 1 parent b37dca1
@jezdez jezdez authored
View
4 django/contrib/gis/db/backends/spatialite/creation.py
@@ -33,7 +33,9 @@ def create_test_db(self, verbosity=1, autoclobber=False):
for cache_alias in settings.CACHES:
cache = get_cache(cache_alias)
if isinstance(cache, BaseDatabaseCache):
- call_command('createcachetable', cache._table, database=self.connection.alias)
+ from django.db import router
+ if router.allow_syncdb(self.connection.alias, cache.cache_model_class):
+ call_command('createcachetable', cache._table, database=self.connection.alias)
# Get a cursor (even though we don't need one yet). This has
# the side effect of initializing the test database.
cursor = self.connection.cursor()
View
12 django/core/management/commands/createcachetable.py
@@ -1,8 +1,7 @@
from optparse import make_option
from django.core.management.base import LabelCommand
-from django.core.cache.backends.db import BaseDatabaseCache
-from django.db import connections, router, transaction, models, DEFAULT_DB_ALIAS
+from django.db import connections, transaction, models, DEFAULT_DB_ALIAS
class Command(LabelCommand):
help = "Creates the table needed to use the SQL cache backend."
@@ -19,11 +18,8 @@ class Command(LabelCommand):
requires_model_validation = False
def handle_label(self, tablename, **options):
- db = options.get('database', DEFAULT_DB_ALIAS)
- cache = BaseDatabaseCache(tablename, {})
- if not router.allow_syncdb(db, cache.cache_model_class):
- return
- connection = connections[db]
+ alias = options.get('database', DEFAULT_DB_ALIAS)
+ connection = connections[alias]
fields = (
# "key" is a reserved word in MySQL, so use "cache_key" instead.
models.CharField(name='cache_key', max_length=255, unique=True, primary_key=True),
@@ -54,4 +50,4 @@ def handle_label(self, tablename, **options):
curs.execute("\n".join(full_statement))
for statement in index_output:
curs.execute(statement)
- transaction.commit_unless_managed(using=db)
+ transaction.commit_unless_managed(using=alias)
View
4 django/db/backends/creation.py
@@ -261,7 +261,9 @@ def create_test_db(self, verbosity=1, autoclobber=False):
for cache_alias in settings.CACHES:
cache = get_cache(cache_alias)
if isinstance(cache, BaseDatabaseCache):
- call_command('createcachetable', cache._table, database=self.connection.alias)
+ from django.db import router
+ if router.allow_syncdb(self.connection.alias, cache.cache_model_class):
+ call_command('createcachetable', cache._table, database=self.connection.alias)
# Get a cursor (even though we don't need one yet). This has
# the side effect of initializing the test database.
View
41 tests/regressiontests/cache/tests.py
@@ -14,11 +14,10 @@
from django.core import management
from django.core.cache import get_cache, DEFAULT_CACHE_ALIAS
from django.core.cache.backends.base import CacheKeyWarning, InvalidCacheBackendError
-from django.db import router
from django.http import HttpResponse, HttpRequest, QueryDict
from django.middleware.cache import FetchFromCacheMiddleware, UpdateCacheMiddleware, CacheMiddleware
-from django.test import RequestFactory, TestCase
-from django.test.utils import get_warnings_state, restore_warnings_state, override_settings
+from django.test import RequestFactory
+from django.test.utils import get_warnings_state, restore_warnings_state
from django.utils import translation
from django.utils import unittest
from django.utils.cache import patch_vary_headers, get_cache_key, learn_cache_key
@@ -759,42 +758,6 @@ def test_old_initialization(self):
self.cache = get_cache('db://%s?max_entries=30&cull_frequency=0' % self._table_name)
self.perform_cull_test(50, 18)
-class DBCacheRouter(object):
- """A router that puts the cache table on the 'other' database."""
-
- def db_for_read(self, model, **hints):
- if model._meta.app_label == 'django_cache':
- return 'other'
-
- def db_for_write(self, model, **hints):
- if model._meta.app_label == 'django_cache':
- return 'other'
-
- def allow_syncdb(self, db, model):
- if model._meta.app_label == 'django_cache':
- return db == 'other'
-
-
-class CreateCacheTableForDBCacheTests(TestCase):
- multi_db = True
-
- def test_createcachetable_observes_database_router(self):
- old_routers = router.routers
- try:
- router.routers = [DBCacheRouter()]
- # cache table should not be created on 'default'
- with self.assertNumQueries(0):
- management.call_command('createcachetable', 'cache_table',
- database='default',
- verbosity=0, interactive=False)
- # cache table should be created on 'other'
- with self.assertNumQueries(1):
- management.call_command('createcachetable', 'cache_table',
- database='other',
- verbosity=0, interactive=False)
- finally:
- router.routers = old_routers
-
class LocMemCacheTests(unittest.TestCase, BaseCacheTests):
backend_name = 'django.core.cache.backends.locmem.LocMemCache'
Please sign in to comment.
Something went wrong with that request. Please try again.