[hamster-applet] don't die on invalid start date or time



commit 2d542b0b893cae3338ca1ae0a91b7350a0824eab
Author: Toms Bauģis <toms baugis gmail com>
Date:   Tue Aug 11 13:05:19 2009 +0300

    don't die on invalid start date or time

 hamster/edit_activity.py |   38 ++++++++++++++++++++++----------------
 1 files changed, 22 insertions(+), 16 deletions(-)
---
diff --git a/hamster/edit_activity.py b/hamster/edit_activity.py
index cc21aba..be83839 100644
--- a/hamster/edit_activity.py
+++ b/hamster/edit_activity.py
@@ -531,7 +531,9 @@ class CustomFactController:
             end_date = start_date
             if end_time < start_time:
                 end_date = start_date + dt.timedelta(days=1)
-            self.set_end_date_label(end_date)
+
+            if end_date:
+                self.set_end_date_label(end_date)
             time, date = end_time, end_date
         else:
             time, date = start_time, start_date
@@ -617,9 +619,12 @@ class CustomFactController:
         self.start_time.grab_focus()
 
     def on_start_time_entered(self, widget):
-        self.end_time.set_time(self.start_time.get_time() +
-                                                     dt.timedelta(minutes = 30))
-        self.end_time.set_start_time(self.start_time.get_time())
+        start_time = self.start_time.get_time()
+        if not start_time:
+            return
+
+        self.end_time.set_time(start_time + dt.timedelta(minutes = 30))
+        self.end_time.set_start_time(start_time)
         self.validate_fields()
         self.end_time.grab_focus()
         
@@ -637,18 +642,19 @@ class CustomFactController:
         if self.get_widget("in_progress").get_active():
             end_time = dt.datetime.now()
 
-        # if we are too far, just roll back for one day
-        if ((end_time - start_time).days > 0): 
-            end_time -= dt.timedelta(days=1)
-            self.update_time(start_time, end_time)
-
-        if start_time:
-            self.draw_preview(start_time.date(), [start_time, end_time])
-
-        # if end time is not in proper distance, do the brutal +30 minutes reset
-        if (end_time < start_time or (end_time - start_time).days > 0):
-            end_time = start_time + dt.timedelta(minutes = 30)
-            self.update_time(start_time, end_time)
+        if start_time and end_time:
+            # if we are too far, just roll back for one day
+            if ((end_time - start_time).days > 0): 
+                end_time -= dt.timedelta(days=1)
+                self.update_time(start_time, end_time)
+    
+            if start_time and end_time:
+                self.draw_preview(start_time.date(), [start_time, end_time])
+    
+            # if end time is not in proper distance, do the brutal +30 minutes reset
+            if (end_time < start_time or (end_time - start_time).days > 0):
+                end_time = start_time + dt.timedelta(minutes = 30)
+                self.update_time(start_time, end_time)
 
         looks_good = False
         if activity_text != "" and start_time and end_time and \



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]