Skip to content

Commit 7030cbb

Browse files
authored
Merge pull request #634 from christherama/mgmt-cmd-respect-db-prefix
2 parents 889090c + c21ea01 commit 7030cbb

File tree

2 files changed

+23
-3
lines changed

2 files changed

+23
-3
lines changed

constance/management/commands/constance.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ def handle(self, command, key=None, value=None, *args, **options):
7070
for k, v in get_values().items():
7171
self.stdout.write(f"{k}\t{v}", ending="\n")
7272
elif command == self.REMOVE_STALE_KEYS:
73-
actual_keys = settings.CONSTANCE_CONFIG.keys()
73+
prefix = getattr(settings, 'CONSTANCE_DATABASE_PREFIX', '')
74+
actual_keys = [f'{prefix}{key}' for key in settings.CONSTANCE_CONFIG]
7475
stale_records = Constance.objects.exclude(key__in=actual_keys)
7576
if stale_records:
7677
self.stdout.write("The following record will be deleted:", ending="\n")

tests/test_cli.py

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,10 @@
66
from django.conf import settings
77
from django.core.management import CommandError
88
from django.core.management import call_command
9-
from django.test import TransactionTestCase
9+
from django.test import TransactionTestCase, override_settings
1010
from django.utils import timezone
1111
from django.utils.encoding import smart_str
1212

13-
from constance import config
1413
from constance.models import Constance
1514

1615

@@ -111,9 +110,29 @@ def test_set_invalid_multi_value(self):
111110
)
112111

113112
def test_delete_stale_records(self):
113+
self._populate_database_with_default_values()
114114
initial_count = Constance.objects.count()
115115

116116
Constance.objects.create(key="STALE_KEY", value=None)
117117
call_command("constance", "remove_stale_keys", stdout=self.out)
118118

119119
self.assertEqual(Constance.objects.count(), initial_count, msg=self.out)
120+
121+
@override_settings(
122+
CONSTANCE_DATABASE_PREFIX='constance:',
123+
)
124+
def test_delete_stale_records_respects_prefix(self):
125+
self._populate_database_with_default_values()
126+
initial_count = Constance.objects.count()
127+
128+
call_command('constance', 'remove_stale_keys', stdout=self.out)
129+
130+
self.assertEqual(Constance.objects.count(), initial_count, msg=self.out)
131+
132+
def _populate_database_with_default_values(self):
133+
"""
134+
Helper function to populate the database with default values defined
135+
in settings since that's not done automatically at startup
136+
"""
137+
for key, (value, *_) in settings.CONSTANCE_CONFIG.items():
138+
Constance.objects.create(key=f'{getattr(settings, "CONSTANCE_DATABASE_PREFIX", "")}{key}', value=value)

0 commit comments

Comments
 (0)