[gentoo-commits] proj/layman:master commit in: layman/db_modules/sqlite_db/, layman/db_modules/json_db/, layman/, ...
commit: a7a267a46660e168bc1d46c4b39c4e89bed20767 Author: Devan Franchini twitch153 AT gentoo DOT org AuthorDate: Sat Aug 15 08:00:35 2015 + Commit: Devan Franchini twitch153 AT gentoo DOT org CommitDate: Sat Aug 15 08:00:37 2015 + URL:https://gitweb.gentoo.org/proj/layman.git/commit/?id=a7a267a4 Adds remove parameter to database write() function This parameter has been added in order to obtain proper parallelization support for layman sqlite databases. With this additional parameter it prompts the sqlite db module's write function to simply return when removing an overlay, preventing it from re-adding any database entires and causing oddness, run-time errors, or other unwanted badness. layman/db.py | 2 +- layman/db_modules/json_db/json_db.py | 2 +- layman/db_modules/sqlite_db/sqlite_db.py | 11 +++ layman/db_modules/xml_db/xml_db.py | 2 +- layman/dbbase.py | 4 ++-- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/layman/db.py b/layman/db.py index 673e6bf..a7ed1ce 100644 --- a/layman/db.py +++ b/layman/db.py @@ -149,7 +149,7 @@ class DB(DbBase): overlay.delete(self.config['storage']) repo_ok = self.repo_conf.delete(overlay) self.remove(overlay, self.path) -self.write(self.path) +self.write(self.path, remove=True) else: self.output.error('No local overlay named ' + overlay.name + '!') return False diff --git a/layman/db_modules/json_db/json_db.py b/layman/db_modules/json_db/json_db.py index d466385..70e41d5 100644 --- a/layman/db_modules/json_db/json_db.py +++ b/layman/db_modules/json_db/json_db.py @@ -112,7 +112,7 @@ class DBHandler(object): del self.overlays[overlay.name] -def write(self, path): +def write(self, path, remove=False): ''' Write the list of overlays to a file. ''' diff --git a/layman/db_modules/sqlite_db/sqlite_db.py b/layman/db_modules/sqlite_db/sqlite_db.py index 6619699..22ae5f3 100644 --- a/layman/db_modules/sqlite_db/sqlite_db.py +++ b/layman/db_modules/sqlite_db/sqlite_db.py @@ -283,6 +283,9 @@ class DBHandler(object): owner_id = 0 source_ids = [] +if overlay.name in self.overlays: +del self.overlays[overlay.name] + with self.__connect__(path) as connection: cursor = connection.cursor() @@ -318,14 +321,14 @@ class DBHandler(object): connection.commit() -if overlay.name in self.overlays: -del self.overlays[overlay.name] - -def write(self, path): +def write(self, path, remove=False): ''' Write the list of overlays to the database. ''' +if remove: +return + try: with self.__connect__(path) as connection: for overlay in self.overlays: diff --git a/layman/db_modules/xml_db/xml_db.py b/layman/db_modules/xml_db/xml_db.py index 316d8f9..fbd7a6a 100644 --- a/layman/db_modules/xml_db/xml_db.py +++ b/layman/db_modules/xml_db/xml_db.py @@ -157,7 +157,7 @@ class DBHandler(object): del self.overlays[overlay.name] -def write(self, path): +def write(self, path, remove=False): ''' Write the list of overlays to a file. ''' diff --git a/layman/dbbase.py b/layman/dbbase.py index cecbf5c..dc089d8 100644 --- a/layman/dbbase.py +++ b/layman/dbbase.py @@ -197,7 +197,7 @@ class DbBase(object): db_ctl.read_db(path, text=text) -def write(self, path, migrate_type=None): +def write(self, path, remove=False, migrate_type=None): ''' Write the list of overlays to a file. ''' @@ -212,7 +212,7 @@ class DbBase(object): self.ignore, self.ignore_init_read_errors) -db_ctl.write(path) +db_ctl.write(path, remove=remove) def remove(self, overlay, path):
[gentoo-commits] proj/layman:master commit in: layman/db_modules/sqlite_db/
commit: 3e582a86a5389c5013fd0b8c5a6cc964d3252a2c Author: Devan Franchini twitch153 AT gentoo DOT org AuthorDate: Thu Aug 13 07:04:40 2015 + Commit: Devan Franchini twitch153 AT gentoo DOT org CommitDate: Thu Aug 13 07:04:44 2015 + URL:https://gitweb.gentoo.org/proj/layman.git/commit/?id=3e582a86 sqlite_db.py: Modifies owner information gathering method Due to the fact that including the owner name isn't necessary layman needed to modify the way it gathered owner information to prevent run-time errors. layman/db_modules/sqlite_db/sqlite_db.py | 23 +-- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/layman/db_modules/sqlite_db/sqlite_db.py b/layman/db_modules/sqlite_db/sqlite_db.py index 14bfa25..6619699 100644 --- a/layman/db_modules/sqlite_db/sqlite_db.py +++ b/layman/db_modules/sqlite_db/sqlite_db.py @@ -169,15 +169,15 @@ class DBHandler(object): WHERE Overlay_ID = ?''', (overlay_id,)) overlay['source'] = cursor.fetchall() -cursor.execute('''SELECT Owner_Name, Owner_Email FROM +cursor.execute('''SELECT Owner_Email, Owner_Name FROM Overlay_Owner JOIN Overlay USING (Overlay_ID) JOIN Owner USING (Owner_ID) WHERE Overlay_ID = ?''', (overlay_id,)) -owner_info = cursor.fetchall() +owner_info = cursor.fetchall()[0] -if len(owner_info): -owner_info = owner_info[0] -overlay['owner_name'] = owner_info[0] -overlay['owner_email'] = owner_info[1] +overlay['owner_email'] = owner_info[0] + +if len(owner_info) 1: +overlay['owner_name'] = owner_info[1] cursor.execute('''SELECT Description FROM Description JOIN Overlay USING (Overlay_ID) WHERE Overlay_ID = ?''', @@ -187,12 +187,7 @@ class DBHandler(object): overlay['status'] = overlay_info[3] overlay['quality'] = overlay_info[4] overlay['priority'] = overlay_info[2] - -if overlay_info[7]: -overlay['license'] = overlay_info[7] -else: -overlay['license'] = None - +overlay['license'] = overlay_info[7] overlay['homepage'] = overlay_info[5] overlay['IRC'] = overlay_info[6] @@ -248,8 +243,8 @@ class DBHandler(object): VALUES ( ?, ? )''', (overlay.owner_name, overlay.owner_email,)) connection.commit() -cursor.execute('''SELECT Owner_ID from Owner WHERE Owner_Name = ?;''', -(overlay.owner_name,)) +cursor.execute('''SELECT Owner_ID from Owner WHERE Owner_Email = ?;''', +(overlay.owner_email,)) owner_id = cursor.fetchone()[0] for source in overlay.sources:
[gentoo-commits] proj/layman:master commit in: layman/db_modules/sqlite_db/
commit: 59ce97acb46ddef1b564ab4032c145ed70c92427 Author: Devan Franchini twitch153 AT gentoo DOT org AuthorDate: Wed Aug 5 06:22:24 2015 + Commit: Devan Franchini twitch153 AT gentoo DOT org CommitDate: Wed Aug 5 06:22:31 2015 + URL:https://gitweb.gentoo.org/proj/layman.git/commit/?id=59ce97ac sqlite_db.py: read_db() connects to database with with command layman/db_modules/sqlite_db/sqlite_db.py | 107 --- 1 file changed, 54 insertions(+), 53 deletions(-) diff --git a/layman/db_modules/sqlite_db/sqlite_db.py b/layman/db_modules/sqlite_db/sqlite_db.py index aef9661..14bfa25 100644 --- a/layman/db_modules/sqlite_db/sqlite_db.py +++ b/layman/db_modules/sqlite_db/sqlite_db.py @@ -148,63 +148,64 @@ class DBHandler(object): ''' Read the overlay definitions from the database and generate overlays. ''' -connection = self.__connect__(path) -cursor = connection.cursor() +cursor = None overlay_id = None overlay = {} -cursor.execute('''SELECT Overlay_ID, Name, Priority, Status, Quality, -Homepage, IRC, License FROM Overlay''') -overlays_info = cursor.fetchall() -connection.commit() +with self.__connect__(path) as connection: +cursor = connection.cursor() +cursor.execute('''SELECT Overlay_ID, Name, Priority, Status, +Quality, Homepage, IRC, License FROM Overlay''') +overlays_info = cursor.fetchall() +connection.commit() -for overlay_info in overlays_info: -overlay = {} -overlay_id = overlay_info[0] -overlay['name'] = overlay_info[1] - -cursor.execute('''SELECT URL, Type, Branch FROM Overlay_Source -JOIN Overlay USING (Overlay_ID) JOIN Source USING (Source_ID) -WHERE Overlay_ID = ?''', (overlay_id,)) -overlay['source'] = cursor.fetchall() - -cursor.execute('''SELECT Owner_Name, Owner_Email FROM -Overlay_Owner JOIN Overlay USING (Overlay_ID) JOIN Owner USING -(Owner_ID) WHERE Overlay_ID = ?''', (overlay_id,)) -owner_info = cursor.fetchall() - -if len(owner_info): -owner_info = owner_info[0] -overlay['owner_name'] = owner_info[0] -overlay['owner_email'] = owner_info[1] - -cursor.execute('''SELECT Description FROM Description JOIN Overlay -USING (Overlay_ID) WHERE Overlay_ID = ?''', (overlay_id,)) -overlay['description'] = cursor.fetchall()[0] - -overlay['status'] = overlay_info[3] -overlay['quality'] = overlay_info[4] -overlay['priority'] = overlay_info[2] - -if overlay_info[7]: -overlay['license'] = overlay_info[7] -else: -overlay['license'] = None - -overlay['homepage'] = overlay_info[5] -overlay['IRC'] = overlay_info[6] - -cursor.execute('''SELECT Feed FROM Feed JOIN Overlay USING -(Overlay_ID) WHERE Overlay_ID = ?''', (overlay_id,)) -overlay['feed'] = cursor.fetchall() - -if len(overlay['feed']): -overlay['feed'] = overlay['feed'][0] - -self.overlays[overlay_info[1]] = Overlay(self.config, - ovl_dict=overlay, - ignore=self.ignore) -connection.close() +for overlay_info in overlays_info: +overlay = {} +overlay_id = overlay_info[0] +overlay['name'] = overlay_info[1] + +cursor.execute('''SELECT URL, Type, Branch FROM Overlay_Source +JOIN Overlay USING (Overlay_ID) JOIN Source USING (Source_ID) +WHERE Overlay_ID = ?''', (overlay_id,)) +overlay['source'] = cursor.fetchall() + +cursor.execute('''SELECT Owner_Name, Owner_Email FROM +Overlay_Owner JOIN Overlay USING (Overlay_ID) JOIN Owner USING +(Owner_ID) WHERE Overlay_ID = ?''', (overlay_id,)) +owner_info = cursor.fetchall() + +if len(owner_info): +owner_info = owner_info[0] +overlay['owner_name'] = owner_info[0] +overlay['owner_email'] = owner_info[1] + +cursor.execute('''SELECT Description FROM Description JOIN +Overlay USING (Overlay_ID) WHERE Overlay_ID = ?''', +(overlay_id,)) +overlay['description'] = cursor.fetchall()[0] + +overlay['status'] = overlay_info[3] +overlay['quality'] = overlay_info[4] +overlay['priority'] = overlay_info[2] + +if overlay_info[7]: +overlay['license'] =