diff options
Diffstat (limited to 'src/plugin.py')
-rw-r--r-- | src/plugin.py | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/plugin.py b/src/plugin.py index eb2a89e3..eca6baf2 100644 --- a/src/plugin.py +++ b/src/plugin.py @@ -19,12 +19,12 @@ class PluginConfig(config.Config): They are accessible inside the plugin with self.config and behave like the core Config object. """ - def __init__(self, filename, module_name): - config.Config.__init__(self, filename) + def __init__(self, filename, module_name, default=None): + config.Config.__init__(self, filename, default=default) self.module_name = module_name self.read() - def get(self, option, default, section=None): + def get(self, option, default=None, section=None): if not section: section = self.module_name return config.Config.get(self, option, default, section) @@ -80,6 +80,7 @@ class SafetyMetaclass(type): if inspect.stack()[1][1] == inspect.getfile(f): raise elif SafetyMetaclass.core: + log.error('Error in a plugin', exc_info=True) SafetyMetaclass.core.information(traceback.format_exc()) return None return helper @@ -364,12 +365,19 @@ class BasePlugin(object, metaclass=SafetyMetaclass): Class that all plugins derive from. """ + default_config = None + def __init__(self, plugin_api, core, plugins_conf_dir): self.core = core # More hack; luckily we'll never have more than one core object SafetyMetaclass.core = core conf = os.path.join(plugins_conf_dir, self.__module__+'.cfg') - self.config = PluginConfig(conf, self.__module__) + try: + self.config = PluginConfig(conf, self.__module__, + default=self.default_config) + except Exception: + log.debug('Error while creating the plugin config', exc_info=True) + self.config = PluginConfig(conf, self.__module__) self._api = plugin_api[self.name] self.init() |