Commit 508468fc9c35aa69007e937d1a42d96a0a476660

Authored by Lucas Moura
Committed by Sergio Oliveira
1 parent f1ff2fc7

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>
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')