Send the config parameter as sender for the signal

This commit is contained in:
Camilo Nova 2016-09-15 09:24:30 -05:00
parent 1d746c080f
commit bebc279edc
3 changed files with 17 additions and 10 deletions

View file

@ -4,7 +4,7 @@ from django.core.exceptions import ImproperlyConfigured
from django.db.models.signals import post_save from django.db.models.signals import post_save
from .. import Backend from .. import Backend
from ... import settings, signals from ... import settings, signals, config
class DatabaseBackend(Backend): class DatabaseBackend(Backend):
@ -86,12 +86,13 @@ class DatabaseBackend(Backend):
if self._cache: if self._cache:
self._cache.set(key, value) self._cache.set(key, value)
signals.config_updated.send(sender='constance', key=key, value=value) signals.config_updated.send(
sender=config, updated_key=key, new_value=value
)
def clear(self, sender, instance, created, **kwargs): def clear(self, sender, instance, created, **kwargs):
if self._cache and not created: if self._cache and not created:
keys = [self.add_prefix(k) keys = [self.add_prefix(k) for k in settings.CONFIG.keys()]
for k in settings.CONFIG.keys()]
keys.append(self.add_prefix(self._autofill_cachekey)) keys.append(self.add_prefix(self._autofill_cachekey))
self._cache.delete_many(keys) self._cache.delete_many(keys)
self.autofill() self.autofill()

View file

@ -3,7 +3,7 @@ from django.utils import six
from django.utils.six.moves import zip from django.utils.six.moves import zip
from . import Backend from . import Backend
from .. import settings, utils, signals from .. import settings, utils, signals, config
try: try:
from cPickle import loads, dumps from cPickle import loads, dumps
@ -49,4 +49,6 @@ class RedisBackend(Backend):
def set(self, key, value): def set(self, key, value):
self._rd.set(self.add_prefix(key), dumps(value)) self._rd.set(self.add_prefix(key), dumps(value))
signals.config_updated.send(sender='constance', key=key, value=value) signals.config_updated.send(
sender=config, updated_key=key, new_value=value
)

View file

@ -81,11 +81,15 @@ You can use it as:
from constance.signals import config_updated from constance.signals import config_updated
@receiver(config_updated) @receiver(config_updated)
def constance_updated(sender, key, value, **kwargs): def constance_updated(sender, updated_key, new_value, **kwargs):
print(sender, key, value) print(sender, updated_key, new_value)
In case you need it the sender is `constance`, and the key and value are The sender is the `config` object, and the `updated_key` and `new_value`
the ones just changed. are the ones just changed.
This callback will get the `config` object as the first parameter so you
can have an isolated function where you can access the `config` object
without dealing with additional imports.
Custom fields Custom fields