X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fipsilon.git;a=blobdiff_plain;f=ipsilon%2Finfo%2Fcommon.py;h=4cd6663ecf9e5bc4fa8c8eac991f84ca2d67c3b1;hp=03de66a21579f83de77f4aa448dbd5318ad627cf;hb=485baf6ee7a315d1af1086fe5b5da8cff6c4ba37;hpb=0167e69a38734586c1a1f45786313efb3b5f73c3 diff --git a/ipsilon/info/common.py b/ipsilon/info/common.py old mode 100755 new mode 100644 index 03de66a..4cd6663 --- a/ipsilon/info/common.py +++ b/ipsilon/info/common.py @@ -1,49 +1,20 @@ -#!/usr/bin/python -# -# Copyright (C) 2014 Ipsilon Project Contributors -# -# See the file named COPYING for the project license +# Copyright (C) 2014 Ipsilon project Contributors, for license see COPYING from ipsilon.util.log import Log -from ipsilon.util.plugin import PluginLoader, PluginObject -from ipsilon.util.plugin import PluginInstaller +from ipsilon.util.plugin import PluginInstaller, PluginLoader +from ipsilon.util.plugin import PluginObject +from ipsilon.util.config import ConfigHelper -class InfoProviderBase(PluginObject, Log): +class InfoProviderBase(ConfigHelper, PluginObject): - def __init__(self): - super(InfoProviderBase, self).__init__() - self._site = None - self.is_enabled = False + def __init__(self, *pargs): + ConfigHelper.__init__(self) + PluginObject.__init__(self, *pargs) def get_user_attrs(self, user): raise NotImplementedError - def enable(self, site): - if self.is_enabled: - return - - if not self._site: - self._site = site - plugins = self._site[FACILITY] - - # configure self - if self.name in plugins['config']: - self.set_config(plugins['config'][self.name]) - - plugins['enabled'].append(self) - self.is_enabled = True - self.debug('Info plugin enabled: %s' % self.name) - - def disable(self, site): - if not self.is_enabled: - return - - plugins = self._site[FACILITY] - plugins['enabled'].remove(self) - self.is_enabled = False - self.debug('Info plugin disabled: %s' % self.name) - class InfoMapping(Log): @@ -65,27 +36,12 @@ class InfoMapping(Log): 'language': 'Language', 'timezone': 'Time Zone', } - self.mapping = dict() - - def set_mapping(self, attrs_map): - self.mapping = attrs_map def display_name(self, name): if name in self.standard_attributes: return self.standard_attributes[name] return name - def map_attrs(self, attrs): - s = dict() - e = dict() - for a in attrs: - if a in self.mapping: - s[self.mapping[a]] = attrs[a] - else: - e[a] = attrs[a] - - return s, e - FACILITY = 'info_config' @@ -95,23 +51,28 @@ class Info(Log): def __init__(self, site): self._site = site - loader = PluginLoader(Info, FACILITY, 'InfoProvider') - self._site[FACILITY] = loader.get_plugin_data() - plugins = self._site[FACILITY] + plugins = PluginLoader(Info, FACILITY, 'InfoProvider') + plugins.get_plugin_data() + self._site[FACILITY] = plugins - available = plugins['available'].keys() + available = plugins.available.keys() self.debug('Available info providers: %s' % str(available)) - plugins['root'] = self - for item in plugins['whitelist']: - self.debug('Login plugin in whitelist: %s' % item) - if item not in plugins['available']: + for item in plugins.enabled: + self.debug('Info plugin in enabled list: %s' % item) + if item not in plugins.available: self.debug('Info Plugin %s not found' % item) continue - plugins['available'][item].enable(self._site) + try: + plugins.available[item].enable() + except Exception as e: # pylint: disable=broad-except + while item in plugins.enabled: + plugins.enabled.remove(item) + self.debug("Info Plugin %s couldn't be enabled: %s" % ( + item, str(e))) def get_user_attrs(self, user, requested=None): - plugins = self._site[FACILITY]['available'] + plugins = self._site[FACILITY].available result = dict() for _, p in plugins.items(): @@ -138,12 +99,18 @@ class InfoProviderInstaller(object): def install_args(self, group): raise NotImplementedError - def configure(self, opts): + def validate_args(self, args): + return + + def unconfigure(self, opts, changes): + return + + def configure(self, opts, changes): raise NotImplementedError class InfoProviderInstall(object): def __init__(self): - pi = PluginInstaller(InfoProviderInstall) + pi = PluginInstaller(InfoProviderInstall, FACILITY) self.plugins = pi.get_plugins()