diff -r 37ab6d0ddb30 -r 8a99ccb99361 db.py --- a/db.py Tue Oct 05 15:19:14 2010 +0200 +++ b/db.py Tue Oct 05 15:38:38 2010 +0200 @@ -129,10 +129,16 @@ cur.close() return activity -def find_active_task(db_file): +def find_active_task(db_file, time=None): con, cur = session(db_file) - sql = "select project, activity from tasks where end is null" - cur.execute(sql) + if time: + values = (time, time) + sql = "select project, activity from tasks where begin < ? and \ +(end is null or end > ?)" + else: + values = () + sql = "select project, activity from tasks where end is null" + cur.execute(sql, values) task = cur.fetchone() if task: task = task[0] @@ -212,16 +218,17 @@ def is_paused(db_file, time): con, cur = session(db_file) - sql = "select rowid from breaks where end is null" - cur.execute(sql) + values = (time,) + sql = "select rowid from breaks where begin < ? and end is null" + cur.execute(sql, values) paused = cur.fetchone() cur.close() return paused -def pause(db_file, project, activity, time): +def pause(db_file, time): print "pausing" if not is_paused(db_file, time): - task = find_active_task(db_file) + task = find_active_task(db_file, time) con, cur = session(db_file) values = (time, None, task, None) sql = "insert into breaks values(?, ?, ?, ?)" @@ -232,10 +239,12 @@ def resume(db_file, task, time, log): print "resuming" - if is_paused(db_file, time): + if is_paused(db_file, time): + if not task: + task = find_active_task(db_file, time) con, cur = session(db_file) values = (time, log, task) - sql = "update breaks set end=?, log=? where task=?" + sql = "update breaks set end=?, log=? where task=? and end is null" cur.execute(sql, values) con.commit() cur.close()