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