diff --git a/couchpotato/core/event.py b/couchpotato/core/event.py index 6f588481..88c15454 100644 --- a/couchpotato/core/event.py +++ b/couchpotato/core/event.py @@ -1,8 +1,7 @@ from axl.axel import Event -from couchpotato.core.helpers.variable import mergeDicts +from couchpotato.core.helpers.variable import mergeDicts, natcmp from couchpotato.core.logger import CPLog import threading -import time import traceback log = CPLog(__name__) @@ -36,7 +35,7 @@ def addEvent(name, handler, priority = 100): return h - e.handle(handler, priority = priority) + e.handle(createHandle, priority = priority) def removeEvent(name, handler): e = events[name] @@ -84,7 +83,8 @@ def fireEvent(name, *args, **kwargs): results = None # Loop over results, stop when first not None result is found. - for r in result: + for r_key in sorted(result.iterkeys(), cmp = natcmp): + r = result[r_key] if r[0] is True and r[1] is not None: results = r[1] break @@ -95,7 +95,8 @@ def fireEvent(name, *args, **kwargs): else: results = [] - for r in result: + for r_key in sorted(result.iterkeys(), cmp = natcmp): + r = result[r_key] if r[0] == True and r[1]: results.append(r[1]) elif r[1]: diff --git a/libs/axl/axel.py b/libs/axl/axel.py index 59ffa1be..5607450d 100644 --- a/libs/axl/axel.py +++ b/libs/axl/axel.py @@ -141,7 +141,7 @@ class Event(object): def fire(self, *args, **kwargs): """ Stores all registered handlers in a queue for processing """ self.queue = Queue.Queue() - self.result = [] + self.result = {} if self.handlers: @@ -158,12 +158,12 @@ class Event(object): if self.asynchronous: handler_, memoize, timeout = self.handlers[handler] - self.result.append((None, None, handler_)) + self.result[handler] = (None, None, handler_) if not self.asynchronous: self.queue.join() - return tuple(self.result) or None + return self.result or None def count(self): """ Returns the count of registered handlers """ @@ -187,12 +187,12 @@ class Event(object): try: r = self._memoize(memoize, timeout, handler, *args, **kwargs) if not self.asynchronous: - self.result.append(tuple(r)) + self.result[h_] = tuple(r) except Exception: if not self.asynchronous: - self.result.append((False, self._error(sys.exc_info()), - handler)) + self.result[h_] = (False, self._error(sys.exc_info()), + handler) else: self.error_handler(sys.exc_info()) finally: