From 2926eb00f40d925549b14b86f73f8649df1e9c05 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Wed, 26 Feb 2014 18:42:09 -0500 Subject: Add Service Provider class This class allows to represent a service provider and its associated policy Signed-off-by: Simo Sorce --- ipsilon/util/data.py | 26 ++++++++++++++++++++++++-- ipsilon/util/plugin.py | 5 +++-- 2 files changed, 27 insertions(+), 4 deletions(-) (limited to 'ipsilon/util') diff --git a/ipsilon/util/data.py b/ipsilon/util/data.py index cbd3b49..2a55bb2 100755 --- a/ipsilon/util/data.py +++ b/ipsilon/util/data.py @@ -189,21 +189,43 @@ class Store(object): if con: con.close() - def get_data(self, plugin): + def get_data(self, plugin, idval=None, name=None, value=None): con = None rows = [] + names = None + values = () + if idval or name or value: + names = "" + if idval: + names += " id=?" + values = values + (idval,) + if name: + if len(names) != 0: + names += " AND" + names += " name=?" + values = values + (name,) + if value: + if len(names) != 0: + names += " AND" + names += " value=?" + values = values + (value,) try: con = sqlite3.connect(self._admin_dbname) cur = con.cursor() cur.execute("CREATE TABLE IF NOT EXISTS " + plugin + "_data (id INTEGER, name TEXT, value TEXT)") - cur.execute("SELECT * FROM " + plugin + "_data") + if not names: + cur.execute("SELECT * FROM " + plugin + "_data") + else: + cur.execute("SELECT * FROM " + plugin + "_data WHERE" + + names, values) rows = cur.fetchall() con.commit() except sqlite3.Error, e: if con: con.rollback() cherrypy.log.error("Failed to load %s data: [%s]" % (plugin, e)) + cherrypy.log.error(repr([names, values])) finally: if con: con.close() diff --git a/ipsilon/util/plugin.py b/ipsilon/util/plugin.py index 16a086a..045cc75 100755 --- a/ipsilon/util/plugin.py +++ b/ipsilon/util/plugin.py @@ -138,8 +138,9 @@ class PluginObject(object): self._config = dict() self._config[option] = value - def get_data(self): - return self._data.get_data(self.name) + 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) -- cgit