Added a flag to registerPlugin to control calling the plugin's post_init method.

This commit is contained in:
Lance Stout 2010-05-23 01:30:49 +08:00 committed by Nathan Fritz
parent 35f4ef3452
commit 5ca4ede5ac

View file

@ -86,7 +86,7 @@ class basexmpp(object):
self.username = jid.split('@', 1)[0] self.username = jid.split('@', 1)[0]
self.server = jid.split('@',1)[-1].split('/', 1)[0] self.server = jid.split('@',1)[-1].split('/', 1)[0]
def registerPlugin(self, plugin, pconfig = {}): def registerPlugin(self, plugin, pconfig = {}, run_post=True):
"""Register a plugin not in plugins.__init__.__all__ but in the plugins """Register a plugin not in plugins.__init__.__all__ but in the plugins
directory.""" directory."""
# discover relative "path" to the plugins module from the main app, and import it. # discover relative "path" to the plugins module from the main app, and import it.
@ -100,6 +100,8 @@ class basexmpp(object):
if hasattr(self.plugin[plugin], 'xep'): if hasattr(self.plugin[plugin], 'xep'):
xep = "(XEP-%s) " % self.plugin[plugin].xep xep = "(XEP-%s) " % self.plugin[plugin].xep
logging.debug("Loaded Plugin %s%s" % (xep, self.plugin[plugin].description)) logging.debug("Loaded Plugin %s%s" % (xep, self.plugin[plugin].description))
if run_post:
self.plugin[plugin].post_init()
def register_plugins(self): def register_plugins(self):
"""Initiates all plugins in the plugins/__init__.__all__""" """Initiates all plugins in the plugins/__init__.__all__"""
@ -109,7 +111,7 @@ class basexmpp(object):
plugin_list = plugins.__all__ plugin_list = plugins.__all__
for plugin in plugin_list: for plugin in plugin_list:
if plugin in plugins.__all__: if plugin in plugins.__all__:
self.registerPlugin(plugin, self.plugin_config.get(plugin, {})) self.registerPlugin(plugin, self.plugin_config.get(plugin, {}), False)
else: else:
raise NameError("No plugin by the name of %s listed in plugins.__all__." % plugin) raise NameError("No plugin by the name of %s listed in plugins.__all__." % plugin)
# run post_init() for cross-plugin interaction # run post_init() for cross-plugin interaction