"""
-__version__ = "$Revision: 17 $"[11:-2]
-__revision__ = "$Id: print_all.py 17 2007-06-14 10:37:08Z phd $"[5:-2]
-__date__ = "$Date: 2007-06-14 14:37:08 +0400 (Thu, 14 Jun 2007) $"[7:-2]
-
-__author__ = "Oleg Broytman <phd@phd.pp.ru>"
-__copyright__ = "Copyright (C) 2007 PhiloSoft Design"
+__author__ = "Oleg Broytman <phd@phdru.name>"
+__copyright__ = "Copyright (C) 2007-2015 PhiloSoft Design"
__license__ = "GNU GPL"
-import sys, os, shelve
+import sys
+from sqlobject import SQLObjectNotFound
+from sqlobject.sqlbuilder import Insert
+from xsetbg_conf import xsetbg_conf
+from xsetbg_db import recreate_db, SQLiteMassInsert
+
-xsetbg_dir = os.path.join(os.environ["HOME"], "lib", "xsetbg")
-os.chdir(xsetbg_dir)
+def convert_str(s):
+ if s == "None":
+ return None
+ else:
+ return int(float(s))
-global_db_name = "xsetbg.db"
+
+fs_encoding = xsetbg_conf.get("images", "fs_encoding")
dump_file = open(sys.argv[1], 'rU')
+xsetbg_db = recreate_db()
+count_new = count_old = 0
+
+with SQLiteMassInsert() as txn:
+ for line in dump_file:
+ id, timestamp, filename = line.strip().split(None, 2)
+ id = convert_str(id)
+ timestamp = convert_str(timestamp)
+ filename = filename.decode(fs_encoding)
+ try:
+ row = xsetbg_db.byFull_name(filename)
+ except SQLObjectNotFound:
+ values = {'last_shown': timestamp,
+ 'full_name': filename.encode('utf-8')}
+ if id:
+ values['id'] = id
+ query = txn.sqlrepr(Insert(xsetbg_db.sqlmeta.table, values=values))
+ txn.query(query)
+ count_new += 1
+ else:
+ assert id is None or row.id == id
+ if row.last_shown is not None:
+ assert row.last_shown == timestamp
+ count_old += 1
-global_db = shelve.open(global_db_name, flag='n')
-for line in dump_file:
- timestamp, filename = line.strip().split(None, 1)
- global_db[filename] = float(timestamp)
-global_db.close()
dump_file.close()
+
+print "New images:", count_new
+print "Existing images:", count_old