core: more robust plugins importation
This commit is contained in:
parent
079e13d693
commit
7c4824f352
1 changed files with 11 additions and 2 deletions
|
|
@ -130,6 +130,7 @@ class SAT(service.Service):
|
|||
ui_contact_list.ContactList(self)
|
||||
ui_profile_manager.ProfileManager(self)
|
||||
self._initialised.callback(None)
|
||||
log.info(_("Backend is ready"))
|
||||
|
||||
def _import_plugins(self):
|
||||
"""Import all plugins found in plugins directory"""
|
||||
|
|
@ -139,7 +140,11 @@ class SAT(service.Service):
|
|||
__plugins_to_import = {} # plugins we still have to import
|
||||
for plug in plug_lst:
|
||||
plugin_path = 'sat.plugins.' + plug
|
||||
__import__(plugin_path)
|
||||
try:
|
||||
__import__(plugin_path)
|
||||
except ImportError as e:
|
||||
log.error(_("Can't import plugin [%(path)s]: %(error)s") % {'path': plugin_path, 'error':e})
|
||||
continue
|
||||
mod = sys.modules[plugin_path]
|
||||
plugin_info = mod.PLUGIN_INFO
|
||||
__plugins_to_import[plugin_info['import_name']] = (plugin_path, mod, plugin_info)
|
||||
|
|
@ -173,7 +178,11 @@ class SAT(service.Service):
|
|||
for to_import in dependencies + recommendations:
|
||||
if to_import not in self.plugins:
|
||||
log.debug('Recursively import dependency of [%s]: [%s]' % (import_name, to_import))
|
||||
self._import_plugins_from_dict(plugins_to_import, to_import, to_import not in dependencies)
|
||||
try:
|
||||
self._import_plugins_from_dict(plugins_to_import, to_import, to_import not in dependencies)
|
||||
except ImportError as e:
|
||||
log.error(_("Can't import plugin %(name)s: %(error)s") % {'name':plugin_info['name'], 'error':e})
|
||||
return
|
||||
log.info(_("importing plugin: %s") % plugin_info['name'])
|
||||
self.plugins[import_name] = getattr(mod, plugin_info['main'])(self)
|
||||
if 'handler' in plugin_info and plugin_info['handler'] == 'yes':
|
||||
|
|
|
|||
Loading…
Reference in a new issue