Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

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.