mirror of
https://github.com/jazzband/django-constance.git
synced 2026-03-16 22:40:24 +00:00
create autofill_values dict with full_cachekey straight away (#650)
This commit is contained in:
parent
a5f01e72bb
commit
520e20844a
4 changed files with 47 additions and 2 deletions
|
|
@ -53,8 +53,7 @@ class DatabaseBackend(Backend):
|
|||
full_cachekey = self.add_prefix(self._autofill_cachekey)
|
||||
if self._cache.get(full_cachekey):
|
||||
return
|
||||
autofill_values = {}
|
||||
autofill_values[full_cachekey] = 1
|
||||
autofill_values = {full_cachekey: 1}
|
||||
for key, value in self.mget(settings.CONFIG):
|
||||
autofill_values[self.add_prefix(key)] = value
|
||||
self._cache.set_many(autofill_values, timeout=self._autofill_timeout)
|
||||
|
|
|
|||
|
|
@ -25,3 +25,30 @@ class TestDatabase(StorageTestsMixin, TestCase):
|
|||
|
||||
def tearDown(self):
|
||||
settings.BACKEND = self.old_backend
|
||||
|
||||
|
||||
class TestDatabaseWithCache(StorageTestsMixin, TestCase):
|
||||
def setUp(self):
|
||||
self.old_backend = settings.BACKEND
|
||||
settings.BACKEND = "constance.backends.database.DatabaseBackend"
|
||||
self.old_cache_backend = settings.DATABASE_CACHE_BACKEND
|
||||
settings.DATABASE_CACHE_BACKEND = "default"
|
||||
super().setUp()
|
||||
self.config._backend._cache.clear()
|
||||
|
||||
def test_database_queries(self):
|
||||
# Read and set to default value
|
||||
with self.assertNumQueries(6):
|
||||
self.assertEqual(self.config.INT_VALUE, 1)
|
||||
|
||||
# Read again
|
||||
with self.assertNumQueries(0):
|
||||
self.assertEqual(self.config.INT_VALUE, 1)
|
||||
|
||||
# Set value
|
||||
with self.assertNumQueries(3):
|
||||
self.config.INT_VALUE = 15
|
||||
|
||||
def tearDown(self):
|
||||
settings.BACKEND = self.old_backend
|
||||
settings.DATABASE_CACHE_BACKEND = self.old_cache_backend
|
||||
|
|
|
|||
12
tests/cache_mockup.py
Normal file
12
tests/cache_mockup.py
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
from django.core.cache.backends.base import BaseCache
|
||||
from django.core.cache.backends.locmem import LocMemCache
|
||||
|
||||
|
||||
class Cache(BaseCache):
|
||||
def __init__(self, name, params):
|
||||
self._cache = LocMemCache(name, params)
|
||||
self.add = self._cache.add
|
||||
self.delete = self._cache.delete
|
||||
self.set = self._cache.set
|
||||
self.get = self._cache.get
|
||||
self.clear = self._cache.clear
|
||||
|
|
@ -29,6 +29,13 @@ DATABASES = {
|
|||
},
|
||||
}
|
||||
|
||||
CACHES = {
|
||||
"default": {
|
||||
"BACKEND": "tests.cache_mockup.Cache",
|
||||
"LOCATION": "locmem",
|
||||
}
|
||||
}
|
||||
|
||||
INSTALLED_APPS = (
|
||||
"django.contrib.admin",
|
||||
"django.contrib.staticfiles",
|
||||
|
|
|
|||
Loading…
Reference in a new issue