Skip to content

Commit 520e208

Browse files
authored
create autofill_values dict with full_cachekey straight away (#650)
1 parent a5f01e7 commit 520e208

File tree

4 files changed

+47
-2
lines changed

4 files changed

+47
-2
lines changed

constance/backends/database.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,7 @@ def autofill(self):
5353
full_cachekey = self.add_prefix(self._autofill_cachekey)
5454
if self._cache.get(full_cachekey):
5555
return
56-
autofill_values = {}
57-
autofill_values[full_cachekey] = 1
56+
autofill_values = {full_cachekey: 1}
5857
for key, value in self.mget(settings.CONFIG):
5958
autofill_values[self.add_prefix(key)] = value
6059
self._cache.set_many(autofill_values, timeout=self._autofill_timeout)

tests/backends/test_database.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,30 @@ def test_database_queries(self):
2525

2626
def tearDown(self):
2727
settings.BACKEND = self.old_backend
28+
29+
30+
class TestDatabaseWithCache(StorageTestsMixin, TestCase):
31+
def setUp(self):
32+
self.old_backend = settings.BACKEND
33+
settings.BACKEND = "constance.backends.database.DatabaseBackend"
34+
self.old_cache_backend = settings.DATABASE_CACHE_BACKEND
35+
settings.DATABASE_CACHE_BACKEND = "default"
36+
super().setUp()
37+
self.config._backend._cache.clear()
38+
39+
def test_database_queries(self):
40+
# Read and set to default value
41+
with self.assertNumQueries(6):
42+
self.assertEqual(self.config.INT_VALUE, 1)
43+
44+
# Read again
45+
with self.assertNumQueries(0):
46+
self.assertEqual(self.config.INT_VALUE, 1)
47+
48+
# Set value
49+
with self.assertNumQueries(3):
50+
self.config.INT_VALUE = 15
51+
52+
def tearDown(self):
53+
settings.BACKEND = self.old_backend
54+
settings.DATABASE_CACHE_BACKEND = self.old_cache_backend

tests/cache_mockup.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from django.core.cache.backends.base import BaseCache
2+
from django.core.cache.backends.locmem import LocMemCache
3+
4+
5+
class Cache(BaseCache):
6+
def __init__(self, name, params):
7+
self._cache = LocMemCache(name, params)
8+
self.add = self._cache.add
9+
self.delete = self._cache.delete
10+
self.set = self._cache.set
11+
self.get = self._cache.get
12+
self.clear = self._cache.clear

tests/settings.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,13 @@
2929
},
3030
}
3131

32+
CACHES = {
33+
"default": {
34+
"BACKEND": "tests.cache_mockup.Cache",
35+
"LOCATION": "locmem",
36+
}
37+
}
38+
3239
INSTALLED_APPS = (
3340
"django.contrib.admin",
3441
"django.contrib.staticfiles",

0 commit comments

Comments
 (0)