summaryrefslogtreecommitdiffstats
path: root/module/plugins
diff options
context:
space:
mode:
authorGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2012-01-06 17:54:53 +0100
committerGravatar RaNaN <Mast3rRaNaN@hotmail.de> 2012-01-06 17:54:53 +0100
commitb877847094b0ba03a098dff0fd769eb456b48dd1 (patch)
tree2d4a4e6b5c4dcba8eec952724a0dd065ef781ced /module/plugins
parentxmpp: disconnect on unload / deactivate (diff)
downloadpyload-b877847094b0ba03a098dff0fd769eb456b48dd1.tar.xz
several improvements, also closes #486, #487
Diffstat (limited to 'module/plugins')
-rw-r--r--module/plugins/Crypter.py4
-rw-r--r--module/plugins/Hook.py32
-rw-r--r--module/plugins/internal/MultiHoster.py2
3 files changed, 18 insertions, 20 deletions
diff --git a/module/plugins/Crypter.py b/module/plugins/Crypter.py
index fe7f0deb8..5d164da64 100644
--- a/module/plugins/Crypter.py
+++ b/module/plugins/Crypter.py
@@ -4,7 +4,7 @@ from traceback import print_exc
from module.Api import Destination
from module.common.packagetools import parseNames
-from module.utils import to_list, has_method
+from module.utils import to_list, has_method, uniqify
from module.utils.fs import exists, remove, fs_encode
from Base import Base, Retry
@@ -83,7 +83,7 @@ class Crypter(Base):
else: # single url
ret.append(url_or_pack)
# eliminate duplicates
- return set(ret)
+ return uniqify(ret)
def __init__(self, core, package=None, password=None):
Base.__init__(self, core)
diff --git a/module/plugins/Hook.py b/module/plugins/Hook.py
index fe464bdaa..76bc19dbe 100644
--- a/module/plugins/Hook.py
+++ b/module/plugins/Hook.py
@@ -19,6 +19,9 @@
from traceback import print_exc
+from functools import wraps
+from module.utils import has_method
+
from Base import Base
class Expose(object):
@@ -35,6 +38,7 @@ def AddEventListener(event):
return f
return _klass
+
class ConfigHandler(object):
""" register method as config handler """
def __new__(cls, f, *args, **kwargs):
@@ -42,13 +46,14 @@ class ConfigHandler(object):
return f
def threaded(f):
+ @wraps(f)
def run(*args,**kwargs):
hookManager.startThread(f, *args, **kwargs)
return run
class Hook(Base):
"""
- Base class for hook plugins.
+ Base class for hook plugins. Please use @threaded decorator for all longer running task.
"""
#: automatically register event listeners for functions, attribute will be deleted dont use it yourself
@@ -79,16 +84,16 @@ class Hook(Base):
for event, funcs in self.event_map.iteritems():
if type(funcs) in (list, tuple):
for f in funcs:
- self.manager.addEvent(event, getattr(self,f))
+ self.evm.addEvent(event, getattr(self,f))
else:
- self.manager.addEvent(event, getattr(self,funcs))
+ self.evm.addEvent(event, getattr(self,funcs))
#delete for various reasons
self.event_map = None
if self.event_list:
for f in self.event_list:
- self.manager.addEvent(f, getattr(self,f))
+ self.evm.addEvent(f, getattr(self,f))
self.event_list = None
@@ -121,23 +126,16 @@ class Hook(Base):
""" more init stuff if needed """
pass
- def unload(self):
- """ called when hook was deactivated """
- pass
-
- def deactivate(self):
- pass
-
def activate(self):
- pass
+ """ Used to activate the hook """
+ if has_method(self.__class__, "coreReady"):
+ self.logDebug("Deprecated method .coreReady() use activated() instead")
+ self.coreReady()
- #event methods - overwrite these if needed
- def coreReady(self):
+ def deactivate(self):
+ """ Used to deactivate the hook. """
pass
- def coreExiting(self):
- pass
-
def downloadPreparing(self, pyfile):
pass
diff --git a/module/plugins/internal/MultiHoster.py b/module/plugins/internal/MultiHoster.py
index 872e0b770..1629fdc5f 100644
--- a/module/plugins/internal/MultiHoster.py
+++ b/module/plugins/internal/MultiHoster.py
@@ -80,6 +80,6 @@ class MultiHoster(Hook):
hoster[self.__name__] = new
- def unload(self):
+ def deactivate(self):
for hoster in self.supported:
self.core.pluginManager.restoreState("hoster", hoster) \ No newline at end of file