summaryrefslogtreecommitdiff
path: root/django/dispatch
diff options
context:
space:
mode:
authorDmitry Medvinsky <dmedvinsky@gmail.com>2012-06-08 14:00:51 +0400
committerFlorian Apolloner <florian@apolloner.eu>2012-06-23 16:31:16 +0200
commitd4da08375b634544b95859d4d4667b8f05e3a29a (patch)
treecdd83ab9b4a15ef938c9811c3e5f02edaf34a4c2 /django/dispatch
parent946d3d9f84ea7979a4abf0857e4aa7ee33576303 (diff)
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): ...
Diffstat (limited to 'django/dispatch')
-rw-r--r--django/dispatch/dispatcher.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/django/dispatch/dispatcher.py b/django/dispatch/dispatcher.py
index 54e71c01cc..8f57b185c3 100644
--- a/django/dispatch/dispatcher.py
+++ b/django/dispatch/dispatcher.py
@@ -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