min_delay = 3600*24 # 24 hours
-if xsetbg_db.select('last_shown IS NULL OR last_shown < %d' %
- (time() - min_delay)).count() == 0:
+if xsetbg_db.select(
+ '(is_image = 1) AND (last_shown IS NULL OR last_shown < %d)' %
+ (time() - min_delay)).count() == 0:
error("No unshown images found. Run rescan_fs.py "
"or decrease min_delay. Abort.")
fs_encoding = xsetbg_conf.get("images", "fs_encoding")
+
def change(force=False):
# Use the program's file as the lock file:
# lock it to prevent two processes run in parallel.
return
try:
- timestamp = xsetbg_db.select('last_shown IS NOT NULL',
- orderBy='-last_shown')[0].last_shown
+ timestamp = xsetbg_db.select(
+ '(is_image = 1) AND (last_shown IS NOT NULL)',
+ orderBy='-last_shown')[0].last_shown
current_time = time()
if not force and timestamp is not None and \
return
# Select a random image that has never been shown
- not_shown_select = xsetbg_db.select('last_shown IS NULL')
+ not_shown_select = xsetbg_db.select(
+ '(is_image = 1) AND (last_shown IS NULL)')
not_shown_count = not_shown_select.count()
if not_shown_count:
row = not_shown_select[random.randint(0, not_shown_count - 1)]
else:
old_shown_select = xsetbg_db.select(
- 'last_shown IS NOT NULL AND last_shown < %d' %
+ '(is_image = 1) AND '
+ '(last_shown IS NOT NULL AND last_shown < %d)' %
current_time - min_delay)
old_shown_count = old_shown_select.count()
if old_shown_count: