1
0
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:
Dmitry Medvinsky
2012-06-08 14:00:51 +04:00
committed by Florian Apolloner
parent 946d3d9f84
commit d4da08375b
5 changed files with 52 additions and 7 deletions

View File

@@ -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