Added add break command.
1.1 --- a/cronrec.py Tue Oct 05 15:19:14 2010 +0200
1.2 +++ b/cronrec.py Tue Oct 05 15:38:38 2010 +0200
1.3 @@ -102,10 +102,10 @@
1.4 db.end(db_file(), project, activity, time, log)
1.5
1.6 def pause(args):
1.7 - db.pause(db_file(), None, None, datetime.now())
1.8 + db.pause(db_file(), datetime.now())
1.9
1.10 def resume(args):
1.11 - db.resume(db_file(), None, None, datetime.now(), args.m)
1.12 + db.resume(db_file(), None, datetime.now(), args.m)
1.13
1.14 def add_task(args):
1.15 project, activity = parse_label(args.label)
1.16 @@ -115,6 +115,13 @@
1.17 db.begin(db_file(), project, activity, begin)
1.18 db.end(db_file(), project, activity, end, log)
1.19
1.20 +def add_break(args):
1.21 + log = args.m
1.22 + begin = datetime.strptime(args.begin, DATETIME_FORMAT)
1.23 + end = datetime.strptime(args.end, DATETIME_FORMAT)
1.24 + db.pause(db_file(), begin)
1.25 + db.resume(db_file(), db.find_active_task(db_file(), begin), end, log)
1.26 +
1.27 def status(args):
1.28 task = db.status(db_file())
1.29 if task:
1.30 @@ -151,12 +158,19 @@
1.31
1.32 sub_add = subs.add_parser("add")
1.33 sub_add_subs = sub_add.add_subparsers()
1.34 +
1.35 sub_add_task = sub_add_subs.add_parser("task")
1.36 sub_add_task.add_argument("label", type=str)
1.37 sub_add_task.add_argument("begin", type=str)
1.38 sub_add_task.add_argument("end", type=str)
1.39 sub_add_task.add_argument("-m", type=str)
1.40 sub_add_task.set_defaults(func=add_task)
1.41 +
1.42 + sub_add_break = sub_add_subs.add_parser("break")
1.43 + sub_add_break.add_argument("begin", type=str)
1.44 + sub_add_break.add_argument("end", type=str)
1.45 + sub_add_break.add_argument("-m", type=str)
1.46 + sub_add_break.set_defaults(func=add_break)
1.47
1.48 sub_status = subs.add_parser("status")
1.49 sub_status.set_defaults(func=status)
2.1 --- a/db.py Tue Oct 05 15:19:14 2010 +0200
2.2 +++ b/db.py Tue Oct 05 15:38:38 2010 +0200
2.3 @@ -129,10 +129,16 @@
2.4 cur.close()
2.5 return activity
2.6
2.7 -def find_active_task(db_file):
2.8 +def find_active_task(db_file, time=None):
2.9 con, cur = session(db_file)
2.10 - sql = "select project, activity from tasks where end is null"
2.11 - cur.execute(sql)
2.12 + if time:
2.13 + values = (time, time)
2.14 + sql = "select project, activity from tasks where begin < ? and \
2.15 +(end is null or end > ?)"
2.16 + else:
2.17 + values = ()
2.18 + sql = "select project, activity from tasks where end is null"
2.19 + cur.execute(sql, values)
2.20 task = cur.fetchone()
2.21 if task:
2.22 task = task[0]
2.23 @@ -212,16 +218,17 @@
2.24
2.25 def is_paused(db_file, time):
2.26 con, cur = session(db_file)
2.27 - sql = "select rowid from breaks where end is null"
2.28 - cur.execute(sql)
2.29 + values = (time,)
2.30 + sql = "select rowid from breaks where begin < ? and end is null"
2.31 + cur.execute(sql, values)
2.32 paused = cur.fetchone()
2.33 cur.close()
2.34 return paused
2.35
2.36 -def pause(db_file, project, activity, time):
2.37 +def pause(db_file, time):
2.38 print "pausing"
2.39 if not is_paused(db_file, time):
2.40 - task = find_active_task(db_file)
2.41 + task = find_active_task(db_file, time)
2.42 con, cur = session(db_file)
2.43 values = (time, None, task, None)
2.44 sql = "insert into breaks values(?, ?, ?, ?)"
2.45 @@ -232,10 +239,12 @@
2.46
2.47 def resume(db_file, task, time, log):
2.48 print "resuming"
2.49 - if is_paused(db_file, time):
2.50 + if is_paused(db_file, time):
2.51 + if not task:
2.52 + task = find_active_task(db_file, time)
2.53 con, cur = session(db_file)
2.54 values = (time, log, task)
2.55 - sql = "update breaks set end=?, log=? where task=?"
2.56 + sql = "update breaks set end=?, log=? where task=? and end is null"
2.57 cur.execute(sql, values)
2.58 con.commit()
2.59 cur.close()