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 | from django.dispatch import Signal | 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,7 +4,7 @@ Objective: Test parameters, and behavior. | ||
4 | """ | 4 | """ |
5 | 5 | ||
6 | from django.test import TestCase | 6 | from django.test import TestCase |
7 | -from colab.signals.signals import Signals | 7 | +from colab.signals.signals import * |
8 | from mock import patch | 8 | from mock import patch |
9 | 9 | ||
10 | 10 | ||
@@ -13,16 +13,15 @@ class SignalsTest(TestCase): | @@ -13,16 +13,15 @@ class SignalsTest(TestCase): | ||
13 | def setUp(self): | 13 | def setUp(self): |
14 | self.list_signal = ['a', 'b', 'c'] | 14 | self.list_signal = ['a', 'b', 'c'] |
15 | self.plugin_name = 'test_signal' | 15 | self.plugin_name = 'test_signal' |
16 | - self.signals = Signals() | ||
17 | 16 | ||
18 | 17 | ||
19 | def test_register_signal_(self): | 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 | signal_name ='a' | 21 | signal_name ='a' |
23 | signal_list = ['test_signal'] | 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 | signal_list) | 25 | signal_list) |
27 | 26 | ||
28 | 27 | ||
@@ -30,12 +29,12 @@ class SignalsTest(TestCase): | @@ -30,12 +29,12 @@ class SignalsTest(TestCase): | ||
30 | signal_name ='a' | 29 | signal_name ='a' |
31 | signal_list = ['test_signal'] | 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 | signal_list) | 38 | signal_list) |
40 | 39 | ||
41 | 40 | ||
@@ -44,7 +43,7 @@ class SignalsTest(TestCase): | @@ -44,7 +43,7 @@ class SignalsTest(TestCase): | ||
44 | handling_method = 'Test' | 43 | handling_method = 'Test' |
45 | signal_name = 'Test' | 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 | sender, handling_method) | 47 | sender, handling_method) |
49 | 48 | ||
50 | 49 | ||
@@ -54,9 +53,9 @@ class SignalsTest(TestCase): | @@ -54,9 +53,9 @@ class SignalsTest(TestCase): | ||
54 | handling_method = 'Test' | 53 | handling_method = 'Test' |
55 | signal_name = 'a' | 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 | args, kwargs = mock.call_args | 59 | args, kwargs = mock.call_args |
61 | 60 | ||
62 | self.assertEqual(args[0], handling_method) | 61 | self.assertEqual(args[0], handling_method) |
@@ -70,8 +69,8 @@ class SignalsTest(TestCase): | @@ -70,8 +69,8 @@ class SignalsTest(TestCase): | ||
70 | handling_method = 'Test' | 69 | handling_method = 'Test' |
71 | signal_name = 'a' | 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 | args, kwargs = mock.call_args | 75 | args, kwargs = mock.call_args |
77 | 76 | ||
@@ -80,4 +79,4 @@ class SignalsTest(TestCase): | @@ -80,4 +79,4 @@ class SignalsTest(TestCase): | ||
80 | 79 | ||
81 | 80 | ||
82 | def test_send_signal_not_registered(self): | 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') |