hamster-applet r742 - trunk/hamster
- From: tbaugis svn gnome org
- To: svn-commits-list gnome org
- Subject: hamster-applet r742 - trunk/hamster
- Date: Wed, 18 Feb 2009 21:29:56 +0000 (UTC)
Author: tbaugis
Date: Wed Feb 18 21:29:56 2009
New Revision: 742
URL: http://svn.gnome.org/viewvc/hamster-applet?rev=742&view=rev
Log:
more brains in db - splitting activities that span over several
days and setting delta
Modified:
trunk/hamster/applet.py
trunk/hamster/db.py
trunk/hamster/reports.py
trunk/hamster/stats.py
trunk/hamster/stuff.py
Modified: trunk/hamster/applet.py
==============================================================================
--- trunk/hamster/applet.py (original)
+++ trunk/hamster/applet.py Wed Feb 18 21:29:56 2009
@@ -248,7 +248,6 @@
# Load today's data, activities and set label
self.last_activity = None
- self.today = datetime.date.today()
self.load_day()
self.update_label()
@@ -382,9 +381,6 @@
"""UI functions"""
def refresh_hamster(self):
"""refresh hamster every x secs - load today, check last activity etc."""
- prev_date = self.today
- self.today = datetime.date.today()
-
# stop tracking task if computer is idle for X minutes
if self.timeout_enabled and self.last_activity and \
self.last_activity['end_time'] == None:
@@ -402,10 +398,7 @@
self.check_user()
# if we have date change - let's finish previous task and start a new one
- if prev_date and prev_date != self.today:
- storage.touch_fact(self.last_activity)
- storage.add_fact(self.last_activity['name'])
- elif self.button.get_active(): # otherwise if we the day view is visible - update day's durations
+ if self.button.get_active(): # otherwise if we the day view is visible - update day's durations
self.load_day()
self.update_label()
@@ -448,7 +441,7 @@
def load_day(self):
"""sets up today's tree and fills it with records
returns information about last activity"""
- day = DayStore(self.today);
+ day = DayStore(datetime.date.today());
self.treeview.set_model(day.fact_store)
if len(day.facts) == 0:
Modified: trunk/hamster/db.py
==============================================================================
--- trunk/hamster/db.py (original)
+++ trunk/hamster/db.py Wed Feb 18 21:29:56 2009
@@ -34,7 +34,7 @@
import hamster
import hamster.storage
import datetime as dt
-
+import copy
class Storage(hamster.storage.Storage):
# we are saving data under $HOME/.gnome2/hamster-applet/hamster.db
@@ -336,11 +336,59 @@
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) <= ?
ORDER BY a.start_time
"""
- end_date = end_date or date
+ end_date = end_date or date
+
+ facts = self.fetchall(query, (_("Unsorted"), date, end_date, date, end_date))
+ res = []
- return self.fetchall(query, (_("Unsorted"), date, end_date))
+
+ for fact in facts:
+
+ start_date = fact["start_time"].date()
+ if fact["end_time"]:
+ end_date = fact["end_time"].date()
+ else:
+ end_date = None
+
+ f = dict(
+ id = fact["id"],
+ start_time = fact["start_time"],
+ end_time = fact["end_time"],
+ description = fact["description"],
+ name = fact["name"],
+ activity_id = fact["activity_id"],
+ category = fact["category"],
+ category_id = fact["category_id"]
+ )
+
+
+ if not end_date or start_date == end_date:
+ if end_date:
+ f["delta"] = fact["end_time"] - fact["start_time"]
+ elif start_date == dt.date.today() \
+ and fact["start_time"] < dt.datetime.now():
+ f["delta"] = dt.datetime.now() - fact["start_time"]
+ else:
+ f["delta"] = None
+
+ res.append(f)
+ else:
+ #if start and end dates do not much, let's populate two entries!
+ if date <= f["start_time"].date() <= end_date:
+ start_fact = copy.copy(f)
+ start_fact["end_time"] = dt.datetime.combine(start_fact["start_time"], dt.time(23, 59))
+ 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(end_fact["end_time"], dt.time(0, 0))
+ end_fact["delta"] = end_fact["end_time"] - end_fact["start_time"]
+ res.append(end_fact)
+ return res
def __get_popular_categories(self):
"""returns categories used in the specified interval"""
Modified: trunk/hamster/reports.py
==============================================================================
--- trunk/hamster/reports.py (original)
+++ trunk/hamster/reports.py Wed Feb 18 21:29:56 2009
@@ -120,15 +120,13 @@
end_time = fact["end_time"]
# ongoing task in current day
- if not end_time and last_activity and fact["id"] == last_activity["id"]:
- end_time = dt.datetime.now()
-
end_time_str = ""
if end_time:
- delta = end_time - fact["start_time"]
- duration = 24 * 60 * delta.days + delta.seconds / 60
end_time_str = end_time.strftime('%H:%M')
+ if fact["delta"]:
+ duration = 24 * 60 * fact["delta"].days + fact["delta"].seconds / 60
+
category = ""
if fact["category"] != _("Unsorted"): #do not print "unsorted" in list
category = fact["category"]
Modified: trunk/hamster/stats.py
==============================================================================
--- trunk/hamster/stats.py (original)
+++ trunk/hamster/stats.py Wed Feb 18 21:29:56 2009
@@ -218,12 +218,8 @@
start_date = fact["start_time"].date()
duration = None
- if fact["end_time"]: # not set if just started
- delta = fact["end_time"] - fact["start_time"]
- duration = 24 * delta.days + delta.seconds / 60
- elif fact["start_time"].date() == dt.date.today():
- delta = dt.datetime.now() - fact["start_time"]
- duration = 24 * delta.days + delta.seconds / 60
+ if fact["delta"]:
+ duration = 24 * fact["delta"].days + fact["delta"].seconds / 60
self.fact_store.append(by_day[start_date]["row_pointer"],
[fact["id"],
Modified: trunk/hamster/stuff.py
==============================================================================
--- trunk/hamster/stuff.py (original)
+++ trunk/hamster/stuff.py Wed Feb 18 21:29:56 2009
@@ -132,12 +132,8 @@
for fact in self.facts:
duration = None
- if fact["end_time"]: # not set if just started
- delta = fact["end_time"] - fact["start_time"]
- duration = 24 * delta.days + delta.seconds / 60
- elif fact["start_time"].date() == dt.date.today(): # give duration to today's last activity
- delta = dt.datetime.now() - fact["start_time"]
- duration = 24 * delta.days + delta.seconds / 60
+ if fact["delta"]:
+ duration = 24 * fact["delta"].days + fact["delta"].seconds / 60
fact_category = fact['category']
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]