[hamster-applet] Initial support for human days
- From: Patryk Zawadzki <pzawadzki src gnome org>
- To: svn-commits-list gnome org
- Subject: [hamster-applet] Initial support for human days
- Date: Wed, 3 Jun 2009 05:38:43 -0400 (EDT)
commit b98ac33e98600730f55e0633a769700c64f53ff8
Author: Patryk Zawadzki <patrys pld-linux org>
Date: Tue Jun 2 19:41:12 2009 +0200
Initial support for human days
---
hamster/db.py | 65 ++++++++++--------------------------------------------
hamster/stats.py | 4 +-
2 files changed, 14 insertions(+), 55 deletions(-)
diff --git a/hamster/db.py b/hamster/db.py
index b430894..a732406 100644
--- a/hamster/db.py
+++ b/hamster/db.py
@@ -356,13 +356,17 @@ class Storage(hamster.storage.Storage):
FROM facts a
LEFT JOIN activities b ON a.activity_id = b.id
LEFT JOIN categories c on b.category_id = c.id
- WHERE (date(a.start_time) >= ? and date(a.start_time) <= ?)
- OR (date(a.end_time) >= ? and date(a.end_time) <= ?)
+ WHERE a.start_time >= ? and a.start_time <= ?
ORDER BY a.start_time
"""
end_date = end_date or date
+
+ #FIXME: add preference to set that
+ split_time = dt.time(5, 30)
+ datetime_from = dt.datetime.combine(date, split_time)
+ datetime_to = dt.datetime.combine(end_date, split_time) + dt.timedelta(days = 1)
- facts = self.fetchall(query, (_("Unsorted"), date, end_date, date, end_date))
+ facts = self.fetchall(query, (_("Unsorted"), datetime_from, datetime_to))
res = []
today = dt.date.today()
@@ -376,28 +380,9 @@ class Storage(hamster.storage.Storage):
or abs(end_date-today).days < 2:
last_activity = self.__get_last_activity()
- # deal with late-night workers!
- if not facts and date == today:
- # no facts today?! let's get last fact of yesterday
- if last_activity:
- # last fact has not finished, we think that it is still ongoing
- f = dict(
- id = last_activity["id"],
- start_time = dt.datetime.combine(date, dt.time(0,0)),
- end_time = now,
- description = last_activity["description"],
- name = last_activity["name"],
- activity_id = last_activity["activity_id"],
- category = last_activity["category"],
- category_id = last_activity["category_id"],
- delta = now - dt.datetime.combine(date, dt.time(0,0))
- )
-
- return [f]
-
-
for fact in facts:
- fact_start_date = fact["start_time"].date()
+ fact_start_date = fact["start_time"].date() \
+ + dt.timedelta(-1 if fact["start_time"].time() < split_time else 0)
if fact["end_time"]:
fact_end_date = fact["end_time"].date()
else:
@@ -406,6 +391,7 @@ class Storage(hamster.storage.Storage):
f = dict(
id = fact["id"],
start_time = fact["start_time"],
+ date = fact_start_date,
end_time = fact["end_time"],
description = fact["description"],
name = fact["name"],
@@ -415,40 +401,13 @@ class Storage(hamster.storage.Storage):
)
if not fact_end_date:
- if fact_start_date == today and fact["start_time"] < now:
+ if f["id"] == last_activity["id"] and fact["start_time"] < now:
# today, present
- f["delta"] = now - fact["start_time"]
- elif last_activity and fact_start_date == yesterday and f["id"] == last_activity["id"]:
- # last fact and it is in yesterday - split it!
- #first yesterday until midnight
- f["end_time"] = dt.datetime.combine(today, dt.time(0,0))
- f["delta"] = f["end_time"] - f["start_time"]
- res.append(f)
-
- #and now today until now
- f = copy.copy(f)
- f["start_time"] = dt.datetime.combine(today, dt.time(0, 0))
- f["end_time"] = now
- f["delta"] = f["end_time"] - f["start_time"]
+ f["delta"] = now - fact["start_time"]
else:
f["delta"] = None
res.append(f)
- elif fact_start_date != fact_end_date:
- # check if maybe we have to split activity in two
- if date <= fact["start_time"].date() <= end_date:
- start_fact = copy.copy(f)
- start_fact["end_time"] = dt.datetime.combine(f["end_time"],
- dt.time(0, 0))
- start_fact["delta"] = start_fact["end_time"] - start_fact["start_time"]
- res.append(start_fact)
-
- if date <= fact["end_time"].date() <= end_date:
- end_fact = copy.copy(f)
- end_fact["start_time"] = dt.datetime.combine(f["end_time"],
- dt.time(0, 0))
- end_fact["delta"] = end_fact["end_time"] - end_fact["start_time"]
- res.append(end_fact)
else:
#else is we have end date and it is the same date
f["delta"] = fact["end_time"] - fact["start_time"]
diff --git a/hamster/stats.py b/hamster/stats.py
index f96077a..755a348 100644
--- a/hamster/stats.py
+++ b/hamster/stats.py
@@ -247,7 +247,7 @@ class StatsViewer(object):
for fact in facts:
- start_date = fact["start_time"].date()
+ start_date = fact["date"]
duration = None
if fact["delta"]:
@@ -302,7 +302,7 @@ class StatsViewer(object):
#now we do the counting
for fact in facts:
duration = None
- start_date = fact['start_time'].date()
+ start_date = fact['date']
if fact["end_time"]: # not set if just started
delta = fact["end_time"] - fact["start_time"]
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]