[hamster-applet] do not allow entering activities in future. fixes bug 626661
- From: Toms Baugis <tbaugis src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [hamster-applet] do not allow entering activities in future. fixes bug 626661
- Date: Wed, 11 Aug 2010 23:57:20 +0000 (UTC)
commit b7d8888cc9e4460beaa778f2ee6ea99d2b6c4aa2
Author: Toms Bauģis <toms baugis gmail com>
Date: Thu Aug 12 00:57:07 2010 +0100
do not allow entering activities in future. fixes bug 626661
src/hamster/edit_activity.py | 20 ++++++++++++++++++++
src/hamster/widgets/dayline.py | 13 +++++++++++++
2 files changed, 33 insertions(+), 0 deletions(-)
---
diff --git a/src/hamster/edit_activity.py b/src/hamster/edit_activity.py
index 936506a..284e63d 100644
--- a/src/hamster/edit_activity.py
+++ b/src/hamster/edit_activity.py
@@ -74,6 +74,8 @@ class CustomFactController:
# otherwise let's start at 8am (unless it is today - in that case
# we will assume that the user wants to start from this moment)
fact_date = fact_date or dt.date.today()
+ if fact_date > dt.date.today():
+ fact_date = dt.date.today()
last_activity = runtime.storage.get_facts(fact_date)
if last_activity and last_activity[-1]["end_time"]:
@@ -133,6 +135,9 @@ class CustomFactController:
self.get_widget("in_progress").set_active(end_time is None)
if end_time:
+ if end_time > dt.datetime.now():
+ end_time = dt.datetime.now()
+
self.end_time.set_time(end_time)
self.set_end_date_label(end_time)
@@ -242,6 +247,13 @@ class CustomFactController:
self.validate_fields()
def on_start_date_entered(self, widget):
+ if dt.datetime.combine(self.start_date.get_date(), self.start_time.get_time()) > dt.datetime.now():
+ self.start_date.set_date(dt.date.today())
+
+ # if we are still over - push one more day back
+ if dt.datetime.combine(self.start_date.get_date(), self.start_time.get_time()) > dt.datetime.now():
+ self.start_date.set_date(dt.date.today() - dt.timedelta(days=1))
+
self.validate_fields()
def on_start_time_entered(self, widget):
@@ -250,6 +262,9 @@ class CustomFactController:
if not start_time:
return
+ if dt.datetime.combine(self.start_date.get_date(), start_time) > dt.datetime.now():
+ self.start_date.set_date(dt.date.today() - dt.timedelta(days=1))
+
self.end_time.set_start_time(start_time)
self.validate_fields()
@@ -268,9 +283,14 @@ class CustomFactController:
end_time = None
else:
end_time = self._get_datetime("end")
+ if end_time > dt.datetime.now():
+ end_time = dt.datetime.now()
+
# make sure we are within 24 hours of start time
end_time -= dt.timedelta(days=(end_time - start_time).days)
+ self.end_time.set_time(end_time)
+
self.draw_preview(start_time, end_time)
looks_good = activity_text is not None and start_time \
diff --git a/src/hamster/widgets/dayline.py b/src/hamster/widgets/dayline.py
index af58706..fe92dd9 100644
--- a/src/hamster/widgets/dayline.py
+++ b/src/hamster/widgets/dayline.py
@@ -146,8 +146,14 @@ class DayLine(graphics.Scene):
self.view_time = dt.datetime.combine((select_start - dt.timedelta(hours=self.day_start.hour, minutes=self.day_start.minute)).date(), self.day_start)
+ if select_start and select_start > dt.datetime.now():
+ select_start = dt.datetime.now()
self.chosen_selection.start_time = select_start
+
+ if select_end and select_end > dt.datetime.now():
+ select_end = dt.datetime.now()
self.chosen_selection.end_time = select_end
+
self.chosen_selection.width = None
self.chosen_selection.fixed = True
self.chosen_selection.visible = True
@@ -164,6 +170,9 @@ class DayLine(graphics.Scene):
self.drag_start = None
start_time = self.selection.start_time
+ if start_time > dt.datetime.now():
+ start_time = dt.datetime.now()
+
end_time = self.selection.end_time
self.new_selection()
self.emit("on-time-chosen", start_time, end_time)
@@ -172,6 +181,10 @@ class DayLine(graphics.Scene):
self.drag_start = None
start_time = self.selection.start_time
+ if start_time > dt.datetime.now():
+ start_time = dt.datetime.now()
+
+
end_time = None
if self.fact_bars:
times = [bar.fact['start_time'] for bar in self.fact_bars if bar.fact['start_time'] - start_time > dt.timedelta(minutes=5)]
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]