From aa64b9d6bb2f1653cc65e57d7f1aed279542b54d Mon Sep 17 00:00:00 2001 From: Oleg Broytman Date: Mon, 20 Jul 2015 00:01:24 +0300 Subject: [PATCH] Starting to switch XSetBg to SQLite instead of bsddb --- .gitignore | 1 + ChangeLog | 4 ++++ TODO | 3 --- xsetbg_db.py | 26 +++++++++++++++++++------- 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 67553ca..785bd02 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /*.py[co] /xsetbg.conf /xsetbg.db +/xsetbg.sqlite /images diff --git a/ChangeLog b/ChangeLog index 0e9a26f..2371535 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Version 5.0.0 (2015-??-??) + + SQLite instead of bsddb. + Version 4.1.0 (2014-03-09) Minor enhancements and bug fixes. diff --git a/TODO b/TODO index ab4c743..0bfd26f 100644 --- a/TODO +++ b/TODO @@ -5,6 +5,3 @@ Min (and max?) image dimensions? Image title on screen (OSD?). - - -SQLite? diff --git a/xsetbg_db.py b/xsetbg_db.py index 126474a..f52c79d 100755 --- a/xsetbg_db.py +++ b/xsetbg_db.py @@ -4,16 +4,22 @@ """ __author__ = "Oleg Broytman " -__copyright__ = "Copyright (C) 2014 PhiloSoft Design" +__copyright__ = "Copyright (C) 2014, 2015 PhiloSoft Design" __license__ = "GNU GPL" __all__ = ['xsetbg_db_path', 'xsetbg_db'] -import anydbm import os -import shelve +from sqlobject import SQLObject, StringCol, IntCol, BoolCol, dberrors from xsetbg_conf import xsetbg_conf + +class XSetbg(SQLObject): + path = StringCol(alternateID=True) + last_shown = IntCol(default=None) # timestamp + flag = BoolCol(default=None) + + db_dirs = [] try: xsetbg_db_path = xsetbg_conf.get('xsetbg', 'database') @@ -29,13 +35,19 @@ if not xsetbg_db_path: db_dirs.append(os.path.dirname(os.path.abspath(__file__))) for d in db_dirs: - xsetbg_db_path = os.path.join(d, 'xsetbg.db') + xsetbg_db_path = os.path.join(d, 'xsetbg.sqlite') if os.path.exists(xsetbg_db_path): break -try: - xsetbg_db = shelve.open(xsetbg_db_path, 'r') -except anydbm.error: +if xsetbg_db_path: + try: + XSetbg.setConnection('sqlite:///' + xsetbg_db_path) + XSetbg.select()[0] + except dberrors.Error: + xsetbg_db = None + else: + xsetbg_db = XSetbg +else: xsetbg_db = None if __name__ == '__main__': -- 2.39.5