diff options
Diffstat (limited to '')
-rw-r--r-- | portato/db/sql.py | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/portato/db/sql.py b/portato/db/sql.py index 3cffd88..b406981 100644 --- a/portato/db/sql.py +++ b/portato/db/sql.py @@ -153,9 +153,8 @@ class SQLDatabase (Database): return f(*args, **kwargs) - return wrapper + return Database.lock(wrapper) - @lock @con def populate (self, category = None, connection = None): def _get(): @@ -169,7 +168,6 @@ class SQLDatabase (Database): connection.executemany("INSERT INTO packages (cat, name, inst, disabled) VALUES (?, ?, ?, ?)", _get()) connection.commit() - @lock @con def get_cat (self, category = None, byName = True, connection = None): sort = "ORDER BY name" @@ -177,15 +175,14 @@ class SQLDatabase (Database): sort = "ORDER BY inst DESC, name" if not category or category == self.ALL: - c = connection.execute("SELECT cat, name, inst FROM packages WHERE 1=1 %s %s" % (self.restrict, sort)) + c = connection.execute("SELECT cat, name, inst, disabled FROM packages WHERE 1=1 %s %s" % (self.restrict, sort)) else: - c = connection.execute("SELECT cat, name, inst FROM packages WHERE cat = ? %s %s" % (self.restrict ,sort), (category,)) + c = connection.execute("SELECT cat, name, inst, disabled FROM packages WHERE cat = ? %s %s" % (self.restrict ,sort), (category,)) for pkg in c: - yield PkgData(pkg["cat"], pkg["name"], pkg["inst"]) + yield PkgData(pkg["cat"], pkg["name"], pkg["inst"], pkg["disabled"]) c.close() - @lock @con def get_categories (self, installed = False, connection = None): @@ -205,7 +202,6 @@ class SQLDatabase (Database): for cat in l: yield cat["cat"] - @lock @con def reload (self, cat = None, connection = None): if cat: @@ -217,6 +213,12 @@ class SQLDatabase (Database): connection.commit() self.populate(connection = connection) + @con + def disable (self, cpv, connection = None): + cat, pkg = cpv.split("/") + connection.execute("UPDATE packages SET disabled = 1 WHERE cat = ? AND name = ?", (cat, pkg)) + connection.commit() + def get_restrict (self): return self._restrict |