4 from core.models import *
5 from planetstack.config import Config
6 from observer.deleters import deleters
10 from fofum import Fofum
13 # decorator that marks dispatachable event methods
15 setattr(func, 'event', func.__name__)
19 # This code is currently not in use.
26 for name in dir(EventHandler):
27 attribute = getattr(EventHandler, name)
28 if hasattr(attribute, 'event'):
29 events.append(getattr(attribute, 'event'))
32 def dispatch(self, event, *args, **kwds):
33 if hasattr(self, event):
34 return getattr(self, event)(*args, **kwds)
38 def __init__(self,user=None,clientid=None):
40 clid = Config().feefie_client_id
41 user = Config().feefie_client_user
43 clid = 'planetstack_core_team'
46 self.fofum = Fofum(user=user)
49 def fire(self,**args):
50 self.fofum.fire(json.dumps(args))
53 def __init__(self,wake_up=None):
54 self.handler = EventHandler()
55 self.wake_up = wake_up
57 def handle_event(self, payload):
58 payload_dict = json.loads(payload)
61 deletion = payload_dict['deletion_flag']
63 model = payload_dict['model']
64 pk = payload_dict['pk']
66 for deleter in deleters[model]:
71 if (not deletion and self.wake_up):
76 # This is our unique client id, to be used when firing and receiving events
77 # It needs to be generated once and placed in the config file
80 clid = Config().feefie_client_id
81 user = Config().feefie_client_user
83 clid = 'planetstack_core_team'
88 listener_thread = threading.Thread(target=f.listen_for_event,args=(clid,self.handle_event))
89 listener_thread.start()