Beispiel #1
0
 def fire_on(self, target_state, handler, event):
     print "Registering callback on: %s for (%s => %s: %s)" % (target_state,
                                                               nm_to_n(event.source()),
                                                               event.target(),
                                                               event.arguments())
     target, state = nm_to_n(target_state[0]), target_state[1]
     self.pending_events.append( ((target, state), (handler, event)) )
Beispiel #2
0
 def on_privmsg(self, connection, e):
     self._pass_message(connection, e)
     response = self._route_message(connection, e, self.routes.private)
     if response and type(response) in (str, unicode):
         self.reply(nm_to_n(e.source()), response)
     if response and type(response) in (list, tuple):
         map(lambda line: self.reply(nm_to_n(e.source()), line), response)
Beispiel #3
0
 def fire_on_transition(self, user, old, new):
     user = nm_to_n(user)
     print "Searching to fire on: (%s) %s => %s:" % (user, old, new)
     print "Queue:", self.transition_triggers
     for trigger in self.transition_triggers:
         t_user, t_old, t_new, t_action = trigger
         if ((t_user == None) or (t_user == user)) and (t_old == type(old) and t_new == type(new)):
             print "Should fire:", trigger
             t_action(user = user)
Beispiel #4
0
def log_message(meta, message):
    from wheelman.core.models import Log
    print "Logging: %s => %s: %s" % (meta.event.source(), meta.event.target(), message)
    session = Session()
    session.add(Log(type = meta.event.eventtype(),
                    source = nm_to_n(meta.event.source()),
                    target = meta.event.target(),
                    text = message))
    session.commit()
    session.close()
Beispiel #5
0
def dance(meta):
    return ("Just for you, %s" % nm_to_n(meta.event.source()),
            "(^'-')^",
            "(^'-')>",
            "(>'-')>",
            "<('-'^)",
            "^('-'^)",
            "(^'-')^",
            "(^'-')>",
            "(>'-')>",
            "<('-'^)",
            "^('-'^)")
Beispiel #6
0
        def wrapped_func(meta, *args, **kwargs):
            print "wrapped in need_user_state(%s)" % state
            
            user_states = fsm.get_user_states(meta.event.source())

            print "User states:", user_states,
            
            if state in [type(s) for s in user_states]:
                print "Passing"
                return func(meta, *args, **kwargs)
            else:
                print "Failing, and deferring"
                fsm.add_initial_user_state(meta.event.source(),
                                                      state=Anonymous,
                                                      data=meta.event)
                fsm.fire_on((meta.event.source(), state),
                            meta.origin, meta.event)
                meta.connection.whois([nm_to_n(meta.event.source())])
                return None
Beispiel #7
0
 def add_initial_user_state(self, user, data = None, state=Anonymous):
     if not self.user_fsm.get(nm_to_n(user)):
         self.user_fsm[nm_to_n(user)] = []
     self.user_fsm[nm_to_n(user)].append(state(data))
     return self.get_user_states(user)
Beispiel #8
0
 def update_user_state(self, user, old, new):
     self.user_fsm[nm_to_n(user)].remove(old)
     self.user_fsm[nm_to_n(user)].append(new)
Beispiel #9
0
 def get_user_states(self, user):
     return self.user_fsm.get(nm_to_n(user), [])
Beispiel #10
0
 def on_nick(self, connection, e):
     old, new = nm_to_n(e.source()), e.target()
     print "Updating FSM nick keys %s => %s" % (old, new)
     fsm.update_nick(old, new)
Beispiel #11
0
def die(meta, message):
    import sys
    message = message or "I've been asked to leave by %s" % nm_to_n(meta.event.source())
    meta.connection.quit(message)
    sys.exit(0) #TODO: This should be an exception handled at the top