mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #18454 -- Added ability to pass a list of signals to receiver.
Added ability to use receiver decorator in the following way:
@receiver([post_save, post_delete], sender=MyModel)
def signals_receiver(sender, **kwargs):
...
This commit is contained in:
committed by
Florian Apolloner
parent
946d3d9f84
commit
d4da08375b
@@ -257,14 +257,21 @@ class Signal(object):
|
||||
def receiver(signal, **kwargs):
|
||||
"""
|
||||
A decorator for connecting receivers to signals. Used by passing in the
|
||||
signal and keyword arguments to connect::
|
||||
signal (or list of signals) and keyword arguments to connect::
|
||||
|
||||
@receiver(post_save, sender=MyModel)
|
||||
def signal_receiver(sender, **kwargs):
|
||||
...
|
||||
|
||||
@receiver([post_save, post_delete], sender=MyModel)
|
||||
def signals_receiver(sender, **kwargs):
|
||||
...
|
||||
|
||||
"""
|
||||
def _decorator(func):
|
||||
signal.connect(func, **kwargs)
|
||||
if isinstance(signal, (list, tuple)):
|
||||
[s.connect(func, **kwargs) for s in signal]
|
||||
else:
|
||||
signal.connect(func, **kwargs)
|
||||
return func
|
||||
return _decorator
|
||||
|
||||
Reference in New Issue
Block a user