Commit 508468fc9c35aa69007e937d1a42d96a0a476660
Committed by
Sergio Oliveira
1 parent
f1ff2fc7
Exists in
master
and in
30 other branches
colab.signals: Making signal methods global
Instead of declaring signals as a class, use at a file containing all the necessary methods for handling signals. This was done because of celery compatibility Signed-off-by: Lucas Kanashiro <kanashiro.duarte@gmail.com>
Showing
2 changed files
with
39 additions
and
41 deletions
Show diff stats
colab/signals/signals.py
1 | 1 | from django.dispatch import Signal |
2 | -import colab.signals.celery | |
2 | +from colab.signals.celery import app | |
3 | 3 | |
4 | -class Signals(): | |
5 | - def __init__(self): | |
6 | - self.registered_signals = {} | |
7 | - self.signal_instances = {} | |
4 | +registered_signals = {} | |
5 | +signal_instances = {} | |
8 | 6 | |
9 | 7 | |
10 | - def register_signal(self, plugin_name, list_signals): | |
11 | - for signal in list_signals: | |
12 | - if signal in self.registered_signals: | |
13 | - if not plugin_name in self.registered_signals[signal]: | |
14 | - self.registered_signals[signal].append(plugin_name) | |
15 | - else: | |
16 | - self.registered_signals[signal] = [] | |
17 | - self.registered_signals[signal].append(plugin_name) | |
18 | - self.signal_instances[signal] = Signal() | |
8 | +def register_signal(plugin_name, list_signals): | |
9 | + for signal in list_signals: | |
10 | + if signal in registered_signals: | |
11 | + if not plugin_name in registered_signals[signal]: | |
12 | + registered_signals[signal].append(plugin_name) | |
13 | + else: | |
14 | + registered_signals[signal] = [] | |
15 | + registered_signals[signal].append(plugin_name) | |
16 | + signal_instances[signal] = Signal() | |
19 | 17 | |
20 | 18 | |
21 | - def connect_signal(self, signal_name, sender, handling_method): | |
22 | - if signal_name in self.signal_instances: | |
23 | - self.signal_instances[signal_name].connect(handling_method, | |
24 | - sender=sender) | |
25 | - else: | |
26 | - raise Exception("Signal does not exist!") | |
19 | +def connect_signal(signal_name, sender, handling_method): | |
20 | + if signal_name in signal_instances: | |
21 | + signal_instances[signal_name].connect(handling_method, | |
22 | + sender=sender) | |
23 | + else: | |
24 | + raise Exception("Signal does not exist!") | |
27 | 25 | |
28 | 26 | |
29 | - def send(self, signal_name, sender, **kwargs): | |
30 | - if signal_name in self.signal_instances: | |
31 | - self.signal_instances[signal_name].send(sender=sender) | |
32 | - else: | |
33 | - raise Exception("Signal does not exist!") | |
27 | +@app.task(bind=True) | |
28 | +def send(self, signal_name, sender, **kwargs): | |
29 | + if signal_name in signal_instances: | |
30 | + signal_instances[signal_name].send(sender=sender) | |
31 | + else: | |
32 | + raise Exception("Signal does not exist!") | ... | ... |
colab/signals/tests/test_signals.py
... | ... | @@ -4,7 +4,7 @@ Objective: Test parameters, and behavior. |
4 | 4 | """ |
5 | 5 | |
6 | 6 | from django.test import TestCase |
7 | -from colab.signals.signals import Signals | |
7 | +from colab.signals.signals import * | |
8 | 8 | from mock import patch |
9 | 9 | |
10 | 10 | |
... | ... | @@ -13,16 +13,15 @@ class SignalsTest(TestCase): |
13 | 13 | def setUp(self): |
14 | 14 | self.list_signal = ['a', 'b', 'c'] |
15 | 15 | self.plugin_name = 'test_signal' |
16 | - self.signals = Signals() | |
17 | 16 | |
18 | 17 | |
19 | 18 | def test_register_signal_(self): |
20 | - self.signals.register_signal(self.plugin_name, self.list_signal) | |
19 | + register_signal(self.plugin_name, self.list_signal) | |
21 | 20 | |
22 | 21 | signal_name ='a' |
23 | 22 | signal_list = ['test_signal'] |
24 | - self.assertEqual(len(self.signals.registered_signals[signal_name]), 1) | |
25 | - self.assertEqual(self.signals.registered_signals[signal_name], | |
23 | + self.assertEqual(len(registered_signals[signal_name]), 1) | |
24 | + self.assertEqual(registered_signals[signal_name], | |
26 | 25 | signal_list) |
27 | 26 | |
28 | 27 | |
... | ... | @@ -30,12 +29,12 @@ class SignalsTest(TestCase): |
30 | 29 | signal_name ='a' |
31 | 30 | signal_list = ['test_signal'] |
32 | 31 | |
33 | - self.signals.register_signal(self.plugin_name, self.list_signal) | |
34 | - self.assertEqual(len(self.signals.registered_signals[signal_name]), 1) | |
32 | + register_signal(self.plugin_name, self.list_signal) | |
33 | + self.assertEqual(len(registered_signals[signal_name]), 1) | |
35 | 34 | |
36 | - self.signals.register_signal(self.plugin_name, self.list_signal) | |
37 | - self.assertEqual(len(self.signals.registered_signals[signal_name]), 1) | |
38 | - self.assertEqual(self.signals.registered_signals[signal_name], | |
35 | + register_signal(self.plugin_name, self.list_signal) | |
36 | + self.assertEqual(len(registered_signals[signal_name]), 1) | |
37 | + self.assertEqual(registered_signals[signal_name], | |
39 | 38 | signal_list) |
40 | 39 | |
41 | 40 | |
... | ... | @@ -44,7 +43,7 @@ class SignalsTest(TestCase): |
44 | 43 | handling_method = 'Test' |
45 | 44 | signal_name = 'Test' |
46 | 45 | |
47 | - self.assertRaises(Exception, self.signals.connect_signal, signal_name, | |
46 | + self.assertRaises(Exception, connect_signal, signal_name, | |
48 | 47 | sender, handling_method) |
49 | 48 | |
50 | 49 | |
... | ... | @@ -54,9 +53,9 @@ class SignalsTest(TestCase): |
54 | 53 | handling_method = 'Test' |
55 | 54 | signal_name = 'a' |
56 | 55 | |
57 | - self.signals.register_signal(self.plugin_name, self.list_signal) | |
56 | + register_signal(self.plugin_name, self.list_signal) | |
58 | 57 | |
59 | - self.signals.connect_signal(signal_name, sender, handling_method) | |
58 | + connect_signal(signal_name, sender, handling_method) | |
60 | 59 | args, kwargs = mock.call_args |
61 | 60 | |
62 | 61 | self.assertEqual(args[0], handling_method) |
... | ... | @@ -70,8 +69,8 @@ class SignalsTest(TestCase): |
70 | 69 | handling_method = 'Test' |
71 | 70 | signal_name = 'a' |
72 | 71 | |
73 | - self.signals.register_signal(self.plugin_name, self.list_signal) | |
74 | - self.signals.send(signal_name, sender) | |
72 | + register_signal(self.plugin_name, self.list_signal) | |
73 | + send(signal_name, sender) | |
75 | 74 | |
76 | 75 | args, kwargs = mock.call_args |
77 | 76 | |
... | ... | @@ -80,4 +79,4 @@ class SignalsTest(TestCase): |
80 | 79 | |
81 | 80 | |
82 | 81 | def test_send_signal_not_registered(self): |
83 | - self.assertRaises(Exception, self.signals.send, 'test_signal', 'test') | |
82 | + self.assertRaises(Exception, send, 'test_signal', 'test') | ... | ... |