commit: daafd7d31457b018797407d97188a4829839172e
Author: Devan Franchini twitch153 AT gentoo DOT org
AuthorDate: Wed Aug 5 05:55:16 2015 +
Commit: Devan Franchini twitch153 AT gentoo DOT org
CommitDate: Wed Aug 5 05:58:59 2015 +
URL:https://gitweb.gentoo.org/proj/layman.git/commit/?id=daafd7d3
Adds remove function for overlay removal from databases
sqlite_db.py: Also changes the way in which feeds are gathered in
read_db(), this shows the nature of feeds being an unrequired attribute
of the overlay.
layman/db.py | 2 +-
layman/db_modules/json_db/__init__.py| 3 ++-
layman/db_modules/json_db/json_db.py | 8
layman/db_modules/sqlite_db/__init__.py | 5 +++--
layman/db_modules/sqlite_db/sqlite_db.py | 23 ---
layman/db_modules/xml_db/__init__.py | 3 ++-
layman/db_modules/xml_db/xml_db.py | 8
layman/dbbase.py | 13 +
8 files changed, 53 insertions(+), 12 deletions(-)
diff --git a/layman/db.py b/layman/db.py
index ba7399c..673e6bf 100644
--- a/layman/db.py
+++ b/layman/db.py
@@ -148,7 +148,7 @@ class DB(DbBase):
if overlay.name in self.overlays.keys():
overlay.delete(self.config['storage'])
repo_ok = self.repo_conf.delete(overlay)
-del self.overlays[overlay.name]
+self.remove(overlay, self.path)
self.write(self.path)
else:
self.output.error('No local overlay named ' + overlay.name + '!')
diff --git a/layman/db_modules/json_db/__init__.py
b/layman/db_modules/json_db/__init__.py
index 1502b9d..ac4daa7 100644
--- a/layman/db_modules/json_db/__init__.py
+++ b/layman/db_modules/json_db/__init__.py
@@ -13,10 +13,11 @@ module_spec = {
'name': 'json_db',
'class': 'DBHandler',
'description': __doc__,
-'functions': ['add_new', 'read_db', 'write'],
+'functions': ['add_new', 'read_db', 'remove', 'write'],
'func_desc': {
'add_new': 'Adds overlay(s) from provided database text',
'read_db': 'Reads the list of overlays from database file',
+'remove' : 'Removes overlay from installed overlays list',
'write' : 'Writes the list of overlays to database file',
},
}
diff --git a/layman/db_modules/json_db/json_db.py
b/layman/db_modules/json_db/json_db.py
index 47413c6..d466385 100644
--- a/layman/db_modules/json_db/json_db.py
+++ b/layman/db_modules/json_db/json_db.py
@@ -104,6 +104,14 @@ class DBHandler(object):
return True
+def remove(self, overlay, path):
+'''
+Removes an overlay from installed overlays list.
+'''
+if overlay.name in self.overlays:
+del self.overlays[overlay.name]
+
+
def write(self, path):
'''
Write the list of overlays to a file.
diff --git a/layman/db_modules/sqlite_db/__init__.py
b/layman/db_modules/sqlite_db/__init__.py
index 7d2fba4..536fc2d 100644
--- a/layman/db_modules/sqlite_db/__init__.py
+++ b/layman/db_modules/sqlite_db/__init__.py
@@ -13,10 +13,11 @@ module_spec = {
'name': 'sqlite_db',
'class': 'DBHandler',
'description': __doc__,
-'functions': ['add_new', 'read_db', 'write'],
+'functions': ['add_new', 'read_db', 'remove', 'write'],
'func_desc': {
-'add_new': 'Adds overlay(s) from provided database text',
+'add_new': 'Adds overlay(s) from provided database file',
'read_db': 'Reads the list of overlays from database file',
+'remove' : 'Removes overlay from provided database file',
'write' : 'Writes the list of overlays to database file',
},
}
diff --git a/layman/db_modules/sqlite_db/sqlite_db.py
b/layman/db_modules/sqlite_db/sqlite_db.py
index 1d079a3..aef9661 100644
--- a/layman/db_modules/sqlite_db/sqlite_db.py
+++ b/layman/db_modules/sqlite_db/sqlite_db.py
@@ -103,8 +103,8 @@ class DBHandler(object):
cursor.execute('''CREATE TABLE IF NOT EXISTS Overlay
( Overlay_ID INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT,
Priority TEXT, Status TEXT, Quality TEXT, Homepage
-TEXT, IRC TEXT, License TEXT, UNIQUE (Name, Homepage, License)
-ON CONFLICT IGNORE )''')
+TEXT, IRC TEXT, License TEXT, UNIQUE (Name) ON CONFLICT IGNORE
)
+''')
cursor.execute('''CREATE TABLE IF NOT EXISTS Owner ( Owner_ID
INTEGER PRIMARY KEY AUTOINCREMENT, Owner_Name TEXT,
Owner_Email TEXT, UNIQUE (Owner_Name, Owner_Email) ON
@@ -180,15 +180,17 @@ class DBHandler(object):
cursor.execute('''SELECT Description FROM Description JOIN Overlay
USING (Overlay_ID)