From: Oleg Broytman Date: Thu, 23 Jul 2015 21:50:07 +0000 (+0300) Subject: Update data X-Git-Tag: v5.0.0~11 X-Git-Url: https://git.phdru.name/?a=commitdiff_plain;h=e97d0a3ca1e3b4c5d8c386fd7939e9b23d7bbbd4;p=xsetbg.git Update data Reload dump without trashing existing data in the table. --- diff --git a/reload_db.py b/reload_db.py index 41a3c94..93eeac9 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 @@ -41,11 +41,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 row.id == id + assert row.last_shown == timestamp txn.commit() sqlhub.processConnection = connection diff --git a/xsetbg_db.py b/xsetbg_db.py index 54d174b..e5fe5d0 100755 --- a/xsetbg_db.py +++ b/xsetbg_db.py @@ -11,18 +11,10 @@ __all__ = ['xsetbg_db_path', 'xsetbg_db'] import os from sqlobject import SQLObject, connectionForURI, sqlhub, \ - StringCol, UnicodeCol, IntCol, BoolCol, DatabaseIndex, dberrors, \ - SQLObjectNotFound + UnicodeCol, IntCol, BoolCol, DatabaseIndex, dberrors from xsetbg_conf import xsetbg_conf -class SqliteSequence(SQLObject): - class sqlmeta: - idName = 'rowid' - name = StringCol(unique=True) - seq = IntCol() - - class XSetBg(SQLObject): full_name = UnicodeCol(alternateID=True) last_shown = IntCol(default=None) # timestamp @@ -31,21 +23,10 @@ class XSetBg(SQLObject): last_shown_idx = DatabaseIndex('last_shown') flag_idx = DatabaseIndex('flag') - def clearTable(self): - super.clearTable(XSetBg, self) - try: - seq = SqliteSequence.byName(XSetBg.sqlmeta.table) - except SQLObjectNotFound: - SqliteSequence(name=XSetBg.sqlmeta.table, seq=0) - else: - seq.seq = 0 # Reset autoincrement counter - def recreate_db(): global xsetbg_db - if xsetbg_db: - xsetbg_db.clearTable() - else: + if not xsetbg_db: xsetbg_db = XSetBg xsetbg_db.createTable() return xsetbg_db