Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Changed the way cache specifiers are parsed.

Allows us to reuse the same code in multiple places, avoiding new and
interesting bugs (the testing framework had a DIY version that was slightly
wrong, for example). Fixed #9833.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@9936 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit b740706707aed9f057a2f8badc31bc87997c6142 1 parent d772369
@malcolmt malcolmt authored
Showing with 15 additions and 5 deletions.
  1. +10 −1 django/core/cache/__init__.py
  2. +5 −4 django/db/backends/creation.py
View
11 django/core/cache/__init__.py
@@ -31,7 +31,12 @@
'dummy': 'dummy',
}
-def get_cache(backend_uri):
+def parse_backend_uri(backend_uri):
+ """
+ Converts the "backend_uri" into a cache scheme ('db', 'memcached', etc), a
+ host and any extra params that are required for the backend. Returns a
+ (scheme, host, params) tuple.
+ """
if backend_uri.find(':') == -1:
raise InvalidCacheBackendError, "Backend URI must start with scheme://"
scheme, rest = backend_uri.split(':', 1)
@@ -48,6 +53,10 @@ def get_cache(backend_uri):
if host.endswith('/'):
host = host[:-1]
+ return scheme, host, params
+
+def get_cache(backend_uri):
+ scheme, host, params = parse_backend_uri(backend_uri)
if scheme in BACKENDS:
module = __import__('django.core.cache.backends.%s' % BACKENDS[scheme], {}, {}, [''])
else:
View
9 django/db/backends/creation.py
@@ -312,11 +312,12 @@ def create_test_db(self, verbosity=1, autoclobber=False):
self.connection.close()
settings.DATABASE_NAME = test_database_name
settings.DATABASE_SUPPORTS_TRANSACTIONS = self._rollback_works()
-
+
call_command('syncdb', verbosity=verbosity, interactive=False)
if settings.CACHE_BACKEND.startswith('db://'):
- cache_name = settings.CACHE_BACKEND[len('db://'):]
+ from django.core.cache import parse_backend_uri
+ _, cache_name, _ = parse_backend_uri(settings.CACHE_BACKEND)
call_command('createcachetable', cache_name)
# Get a cursor (even though we don't need one yet). This has
@@ -363,7 +364,7 @@ def _create_test_db(self, verbosity, autoclobber):
sys.exit(1)
return test_database_name
-
+
def _rollback_works(self):
cursor = self.connection.cursor()
cursor.execute('CREATE TABLE ROLLBACK_TEST (X INT)')
@@ -375,7 +376,7 @@ def _rollback_works(self):
cursor.execute('DROP TABLE ROLLBACK_TEST')
self.connection._commit()
return count == 0
-
+
def destroy_test_db(self, old_database_name, verbosity=1):
"""
Destroy a test database, prompting the user for confirmation if the
Please sign in to comment.
Something went wrong with that request. Please try again.