From: Oleg Broytman Date: Sun, 19 Jul 2015 21:01:24 +0000 (+0300) Subject: Starting to switch XSetBg to SQLite instead of bsddb X-Git-Tag: v5.0.0~23 X-Git-Url: https://git.phdru.name/?p=xsetbg.git;a=commitdiff_plain;h=aa64b9d6bb2f1653cc65e57d7f1aed279542b54d Starting to switch XSetBg to SQLite instead of bsddb --- 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__':