diff --git a/couchpotato/core/event.py b/couchpotato/core/event.py index caffd65..663cb17 100644 --- a/couchpotato/core/event.py +++ b/couchpotato/core/event.py @@ -1,7 +1,6 @@ from axl.axel import Event from couchpotato.core.helpers.variable import mergeDicts from couchpotato.core.logger import CPLog -import inspect import threading import traceback @@ -9,8 +8,6 @@ log = CPLog(__name__) events = {} - - def addEvent(name, handler): if events.get(name): @@ -18,14 +15,19 @@ def addEvent(name, handler): else: e = events[name] = Event(threads = 20, exc_info = True, traceback = True, lock = threading.RLock()) - def createHandle(handler, *args, **kwargs): - handler.im_self.isRunning(True) - h = handler(*args, **kwargs) - handler.im_self.isRunning(True) + def createHandle(*args, **kwargs): + + try: + parent = handler.im_self + parent.beforeCall() + h = handler(*args, **kwargs) + parent.afterCall() + except: + h = handler(*args, **kwargs) return h - e += createHandle(handler) + e += createHandle def removeEvent(name, handler): e = events[name] diff --git a/couchpotato/core/plugins/base.py b/couchpotato/core/plugins/base.py index fa06e9f..d42e409 100644 --- a/couchpotato/core/plugins/base.py +++ b/couchpotato/core/plugins/base.py @@ -67,6 +67,11 @@ class Plugin(object): except Exception, e: log.error('Unable to create folder "%s": %s' % (path, e)) + def beforeCall(self): + self.isRunning(True) + + def afterCall(self): + self.isRunning(False) def doShutdown(self): self.shuttingDown(True)