I need make a save with a model but i need disconnect some receivers of the signals before save it.
I mean,
I have a model:
class MyModel(mo
I needed to prevent certain signals from firing during unittests so I made a decorator based on qris's response:
from django.db.models import signals
def prevent_signal(signal_name, signal_fn, sender):
def wrap(fn):
def wrapped_fn(*args, **kwargs):
signal = getattr(signals, signal_name)
signal.disconnect(signal_fn, sender)
fn(*args, **kwargs)
signal.connect(signal_fn, sender)
return wrapped_fn
return wrap
Using it is simple:
@prevent_signal('post_save', my_signal, SenderClass)
def test_something_without_signal(self):
# the signal will not fire inside this test