summaryrefslogtreecommitdiff
path: root/src/plugin.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugin.py')
-rw-r--r--src/plugin.py16
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()