diff options
| author | Dmitry Medvinsky <dmedvinsky@gmail.com> | 2012-06-08 14:00:51 +0400 |
|---|---|---|
| committer | Florian Apolloner <florian@apolloner.eu> | 2012-06-23 16:31:16 +0200 |
| commit | d4da08375b634544b95859d4d4667b8f05e3a29a (patch) | |
| tree | cdd83ab9b4a15ef938c9811c3e5f02edaf34a4c2 /django/dispatch | |
| parent | 946d3d9f84ea7979a4abf0857e4aa7ee33576303 (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.py | 11 |
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 |
