X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=reload_db.py;h=64e84f4cdafbc8b21ec6e8c0b370df9c7d812f5a;hb=a3637a99967383effca24fb7c3d501e6d2dc3e41;hp=41a3c941fcc3b406f1f74f9ca65dc8e126a5b900;hpb=990bd4dfbb33d7f14e2a44371a9ae76d8ccb125f;p=xsetbg.git diff --git a/reload_db.py b/reload_db.py index 41a3c94..64e84f4 100755 --- a/reload_db.py +++ b/reload_db.py @@ -10,7 +10,7 @@ __copyright__ = "Copyright (C) 2007-2015 PhiloSoft Design" __license__ = "GNU GPL" import sys -from sqlobject import sqlhub +from sqlobject import sqlhub, SQLObjectNotFound from sqlobject.sqlbuilder import Insert from xsetbg_conf import xsetbg_conf from xsetbg_db import recreate_db @@ -19,6 +19,7 @@ fs_encoding = xsetbg_conf.get("images", "fs_encoding") dump_file = open(sys.argv[1], 'rU') xsetbg_db = recreate_db() + def convert_str(s): if s == "None": return None @@ -41,11 +42,17 @@ for line in dump_file: timestamp = convert_str(timestamp) if fs_encoding != 'utf-8': filename = filename.decode(fs_encoding).encode('utf-8') - values = {'last_shown': timestamp, 'full_name': filename} - if id: - values['id'] = id - query = txn.sqlrepr(Insert(xsetbg_db.sqlmeta.table, values=values)) - txn.query(query) + try: + row = xsetbg_db.byFull_name(filename) + except SQLObjectNotFound: + values = {'last_shown': timestamp, 'full_name': filename} + if id: + values['id'] = id + query = txn.sqlrepr(Insert(xsetbg_db.sqlmeta.table, values=values)) + txn.query(query) + else: + assert id is None or row.id == id + assert row.last_shown == timestamp txn.commit() sqlhub.processConnection = connection