X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fipsilon.git;a=blobdiff_plain;f=ipsilon%2Finfo%2Fcommon.py;h=4fbb7ef2a9bbc8e1494d7b9574d46cce0c2aa951;hp=6dbaf938422a73d739e30dc8d53f1f91728a1407;hb=14e8ecd7cf8ea8d342eac5c4c66b764b3a8e2dbb;hpb=bf4a27ab704581b68ddc24c74d92fc724ea0f124 diff --git a/ipsilon/info/common.py b/ipsilon/info/common.py index 6dbaf93..4fbb7ef 100755 --- a/ipsilon/info/common.py +++ b/ipsilon/info/common.py @@ -9,7 +9,7 @@ from ipsilon.util.plugin import PluginLoader, PluginObject from ipsilon.util.plugin import PluginInstaller -class InfoProviderBase(PluginObject): +class InfoProviderBase(PluginObject, Log): def __init__(self): super(InfoProviderBase, self).__init__() @@ -17,17 +17,39 @@ class InfoProviderBase(PluginObject): def get_user_attrs(self, user): raise NotImplementedError + def enable(self, site): + plugins = site[FACILITY] + if self in plugins['enabled']: + return + + # configure self + if self.name in plugins['config']: + self.set_config(plugins['config'][self.name]) + + plugins['enabled'].append(self) + self.debug('Info plugin enabled: %s' % self.name) + + def disable(self, site): + plugins = site[FACILITY] + if self not in plugins['enabled']: + return + + plugins['enabled'].remove(self) + self.debug('Info plugin disabled: %s' % self.name) + FACILITY = 'info_config' class Info(Log): - def __init__(self, *args, **kwargs): + def __init__(self, site): + self._site = site self.providers = [] loader = PluginLoader(Info, FACILITY, 'InfoProvider') - plugins = loader.get_plugin_data() + self._site[FACILITY] = loader.get_plugin_data() + plugins = self._site[FACILITY] available = plugins['available'].keys() self.debug('Available info providers: %s' % str(available))