Move registerPlugin to __new__ magic

This commit is contained in:
Ruud
2013-08-18 00:22:36 +02:00
parent 4348451692
commit f4217ecd3d
2 changed files with 11 additions and 6 deletions
+1 -6
View File
@@ -111,12 +111,7 @@ class Loader(object):
def loadPlugins(self, module, name):
try:
klass = module.start()
klass.registerPlugin()
if klass and getattr(klass, 'auto_register_static'):
klass.registerStatic(module.__file__)
module.start()
return True
except Exception, e:
log.error('Failed loading plugin "%s": %s', (module.__file__, traceback.format_exc()))
+10
View File
@@ -12,6 +12,7 @@ from urlparse import urlparse
import cookielib
import glob
import gzip
import inspect
import math
import os.path
import re
@@ -35,11 +36,20 @@ class Plugin(object):
http_failed_request = {}
http_failed_disabled = {}
def __new__(typ, *args, **kwargs):
new_plugin = super(Plugin, typ).__new__(typ, *args, **kwargs)
new_plugin.registerPlugin()
return new_plugin
def registerPlugin(self):
addEvent('app.do_shutdown', self.doShutdown)
addEvent('plugin.running', self.isRunning)
self._running = []
if self.auto_register_static:
self.registerStatic(inspect.getfile(self.__class__))
def conf(self, attr, value = None, default = None, section = None):
return Env.setting(attr, section = section if section else self.getName().lower(), value = value, default = default)