hamster-applet r510 - trunk/hamster



Author: tbaugis
Date: Mon Sep 15 12:35:54 2008
New Revision: 510
URL: http://svn.gnome.org/viewvc/hamster-applet?rev=510&view=rev

Log:
ok, full fix to avoid amiguity in strings involving dates.
fixes bug 552156

Modified:
   trunk/hamster/reports.py
   trunk/hamster/stats.py
   trunk/hamster/stuff.py

Modified: trunk/hamster/reports.py
==============================================================================
--- trunk/hamster/reports.py	(original)
+++ trunk/hamster/reports.py	Mon Sep 15 12:35:54 2008
@@ -21,20 +21,20 @@
 import datetime as dt
 
 def simple(facts, start_date, end_date):
+    dates_dict = stuff.dateDict(start_date, "start_")
+    dates_dict.update(stuff.dateDict(end_date, "end_"))
+    
+    
     if start_date.year != end_date.year:
-        start_str = start_date.strftime(_('%B %d. %Y'))
-        end_str = end_date.strftime(_('%B %d. %Y'))
+        title = _("Overview for %(start_B)s %(start_d)s. %(start_Y)s - %(end_B)s %(end_d)s. %(end_Y)s") % dates_dict
     elif start_date.month != end_date.month:
-        start_str = start_date.strftime(_('%B %d'))
-        end_str = end_date.strftime(_('%B %d'))
+        title = _("Overview for %(start_B)s %(start_d)s. - %(end_B)s %(end_d)s. %(end_Y)s") % dates_dict
     else:
-        start_str = start_date.strftime(_('%B %d'))
-        end_str = end_date.strftime(_('%d, %Y'))
+        title = _("Overview for %(start_B)s %(start_d)s - %(end_d)s. %(end_Y)s") % dates_dict
 
     if start_date == end_date:
-        title = _("Overview for %s") % (start_date.strftime(_('%B %d. %Y')))
-    else:
-        title = _("Overview for %s - %s") % (start_str, end_str)
+        title = _("Overview for %(start_B)s %(start_d)s. %(start_Y)s") % dates_dict
+    
 
     report_path = os.path.join(os.path.expanduser("~"), "%s.html" % title)
     report = open(report_path, "w")    
@@ -108,7 +108,7 @@
                             <td>%s</td>
                             <td>%s</td>
                             <td>%s</td>
-</tr>""" % (fact["start_time"].strftime(_("%d.%m.%y")),
+</tr>""" % (_("%(report_d)s.%(report_m)s.%(report_Y)s") % stuff.dateDict(fact["start_time"], "report_"),
             fact["name"],
             category, 
             fact["start_time"].strftime('%H:%M'),

Modified: trunk/hamster/stats.py
==============================================================================
--- trunk/hamster/stats.py	(original)
+++ trunk/hamster/stats.py	Mon Sep 15 12:35:54 2008
@@ -168,7 +168,10 @@
         for i in range((self.end_date - self.start_date).days  + 1):
             current_date = self.start_date + dt.timedelta(i)
             # date format in overview window fact listing
-            fact_date = current_date.strftime(_('%A, %b %d.'))
+            # prefix is "o_",letter after prefix is regular python format. you can use all of them
+            fact_date = _("%(o_A)s, %(o_b)s %(o_d)s.") %  stuff.dateDict(current_date, "o_")
+            
+            
             day_row = self.fact_store.append(None, [-1,
                                                     fact_date,
                                                     "",
@@ -216,7 +219,9 @@
                 totals["by_day"].append([strday, by_day[day]["duration"] / 60.0, None, None, day])
             else:
                 # date format in month chart in overview window (click on "month" to see it)
-                strday = day.strftime(_('%d. %b'))
+                # prefix is "m_", letter after prefix is regular python format. you can use all of them
+                strday = _("%(m_d)s., %(m_b)s") %  stuff.dateDict(day, "m_")
+
                 background = None
                 if day.weekday() in [5, 6]:
                     background = 7
@@ -259,37 +264,40 @@
         
 
     def do_graph(self):
+        dates_dict = stuff.dateDict(self.start_date, "start_")
+        dates_dict.update(stuff.dateDict(self.end_date, "end_"))
+        
+        
         if self.start_date.year != self.end_date.year:
-            # start date format for overview label if start and end years don't match
-            start_str = self.start_date.strftime(_('%B %d. %Y'))
-            # end date format for overview label if start and end years don't match
-            end_str = self.end_date.strftime(_('%B %d. %Y'))
+            # overview label if start and end years don't match
+            # letter after prefixes (start_, end_) is the one of
+            # standard python date formatting ones- you can use all of them
+            overview_label = _("Overview for %(start_B)s %(start_d)s. %(start_Y)s - %(end_B)s %(end_d)s. %(end_Y)s") % dates_dict
         elif self.start_date.month != self.end_date.month:
-            # start date format for overview label if start and end month do not match
-            start_str = self.start_date.strftime(_('%B %d.'))
-            # end date format for overview label if start and end month do not match
-            end_str = self.end_date.strftime(_('%B %d.'))
+            #overview label if start and end month do not match
+            # letter after prefixes (start_, end_) is the one of
+            # standard python date formatting ones- you can use all of them
+            overview_label = _("Overview for %(start_B)s %(start_d)s. - %(end_B)s %(end_d)s. %(end_Y)s") % dates_dict
         else:
-            # start date format for overview label for interval in same month
-            start_str = self.start_date.strftime(_('%B %d'))
-            # end date format for overview label for interval in same month
-            end_str = self.end_date.strftime(_('%d, %Y'))
+            #overview label for interval in same month
+            # letter after prefixes (start_, end_) is the one of
+            # standard python date formatting ones- you can use all of them
+            overview_label = _("Overview for %(start_B)s %(start_d)s - %(end_d)s. %(end_Y)s") % dates_dict
 
         if self.day_view.get_active():
-            # date format for single day
-            date_str = self.start_date.strftime(_('%B %d. %Y'))
             # overview label for single day
-            label_text = _("Overview for %s") % (date_str)
+            # letter after prefixes (start_, end_) is the one of
+            # standard python date formatting ones- you can use all of them
+            overview_label = _("Overview for %(start_B)s %(start_d)s. %(start_Y)s") % dates_dict
             dayview_caption = _("Day")
         elif self.week_view.get_active():
-            label_text = _("Overview for %s - %s") % (start_str, end_str)
             dayview_caption = _("Week")
         else:
-            label_text = _("Overview for %s - %s") % (start_str, end_str)
             dayview_caption = _("Month")
         
+        
         label = self.get_widget("overview_label")
-        label.set_text(label_text)
+        label.set_text(overview_label)
 
         label2 = self.get_widget("dayview_caption")
         label2.set_markup("<b>%s</b>" % (dayview_caption))

Modified: trunk/hamster/stuff.py
==============================================================================
--- trunk/hamster/stuff.py	(original)
+++ trunk/hamster/stuff.py	Mon Sep 15 12:35:54 2008
@@ -54,6 +54,34 @@
             
     return formatted_duration
 
+def dateDict(date, prefix):
+    """converts date into dictionary, having prefix for all the keys"""
+    res = {}
+    
+    res[prefix+"a"] = date.strftime("%a")
+    res[prefix+"A"] = date.strftime("%A")
+    res[prefix+"b"] = date.strftime("%b")
+    res[prefix+"B"] = date.strftime("%B")
+    res[prefix+"c"] = date.strftime("%c")
+    res[prefix+"d"] = date.strftime("%d")
+    res[prefix+"H"] = date.strftime("%H")
+    res[prefix+"I"] = date.strftime("%I")
+    res[prefix+"j"] = date.strftime("%j")
+    res[prefix+"m"] = date.strftime("%m")
+    res[prefix+"M"] = date.strftime("%M")
+    res[prefix+"p"] = date.strftime("%p")
+    res[prefix+"S"] = date.strftime("%S")
+    res[prefix+"U"] = date.strftime("%U")
+    res[prefix+"w"] = date.strftime("%w")
+    res[prefix+"W"] = date.strftime("%W")
+    res[prefix+"x"] = date.strftime("%x")
+    res[prefix+"X"] = date.strftime("%X")
+    res[prefix+"y"] = date.strftime("%y")
+    res[prefix+"Y"] = date.strftime("%Y")
+    res[prefix+"Z"] = date.strftime("%Z")
+    
+    return res
+
 class DayStore(object):
     """A day view contains a treeview for facts of the day and another
        one for totals. It creates those widgets on init, use



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