X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fipsilon.git;a=blobdiff_plain;f=ipsilon%2Futil%2Fplugin.py;h=edfda168ae22524020a1ca0cf68627cff63e7d75;hp=2077023ab34c31377a355d1dee89a25fc0acd8af;hb=71edd1146556eecb9f9375da46313e94bf82874c;hpb=2b9722213d76306fe6f3b9f2fe157b3459d28e3a diff --git a/ipsilon/util/plugin.py b/ipsilon/util/plugin.py index 2077023..edfda16 100755 --- a/ipsilon/util/plugin.py +++ b/ipsilon/util/plugin.py @@ -22,15 +22,12 @@ import imp import cherrypy import inspect from ipsilon.util.data import Store +from ipsilon.util.log import Log class Plugins(object): - def __init__(self, path=None): - if path is None: - self._path = os.getcwd() - else: - self._path = path + def __init__(self): self._providers_tree = None def _load_class(self, tree, class_type, file_name): @@ -40,7 +37,7 @@ class Plugins(object): try: if ext.lower() == '.py': mod = imp.load_source(name, file_name) - #elif ext.lower() == '.pyc': + # elif ext.lower() == '.pyc': # mod = imp.load_compiled(name, file_name) else: return @@ -83,7 +80,7 @@ class PluginLoader(object): if config is None: config = dict() - p = Plugins(path=cherrypy.config['base.dir']) + p = Plugins() (pathname, dummy) = os.path.split(inspect.getfile(baseobj)) self._plugins = { 'config': config, @@ -96,12 +93,23 @@ class PluginLoader(object): return self._plugins -class PluginObject(object): +class PluginInstaller(object): + def __init__(self, baseobj): + (pathname, dummy) = os.path.split(inspect.getfile(baseobj)) + self._pathname = pathname + + def get_plugins(self): + p = Plugins() + return p.get_plugins(self._pathname, 'Installer') + + +class PluginObject(Log): def __init__(self): self.name = None self._config = None self._options = None + self._data = Store() def get_config_desc(self): """ The configuration description is a dictionary that provides @@ -136,3 +144,28 @@ class PluginObject(object): if not self._config: self._config = dict() self._config[option] = value + + def get_plugin_config(self, facility): + return self._data.get_plugin_config(facility, self.name) + + def save_plugin_config(self, facility): + self._data.save_plugin_config(facility, self.name, self._config) + + def get_data(self, idval=None, name=None, value=None): + return self._data.get_data(self.name, idval=idval, name=name, + value=value) + + def save_data(self, data): + self._data.save_data(self.name, data) + + def new_datum(self, datum): + self._data.new_datum(self.name, datum) + + def del_datum(self, idval): + self._data.del_datum(self.name, idval) + + def wipe_config_values(self, facility): + self._data.wipe_plugin_config(facility, self.name) + + def wipe_data(self): + self._data.wipe_data(self.name)