Add infrastructure to delete plugin data by id
[cascardo/ipsilon.git] / ipsilon / util / plugin.py
index 16a086a..c57cb29 100755 (executable)
@@ -26,11 +26,7 @@ from ipsilon.util.data import Store
 
 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):
@@ -83,7 +79,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,6 +92,16 @@ class PluginLoader(object):
         return self._plugins
 
 
+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(object):
 
     def __init__(self):
@@ -138,8 +144,27 @@ class PluginObject(object):
             self._config = dict()
         self._config[option] = value
 
-    def get_data(self):
-        return self._data.get_data(self.name)
+    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)