2.1 --- a/imip_manager.py Tue Jan 13 00:05:00 2015 +0100
2.2 +++ b/imip_manager.py Tue Jan 13 00:18:53 2015 +0100
2.3 @@ -24,7 +24,8 @@
2.4
2.5 LIBRARY_PATH = "/var/lib/imip-agent"
2.6
2.7 -import cgi, os, sys, locale
2.8 +import babel.dates
2.9 +import cgi, os, sys
2.10
2.11 sys.path.append(LIBRARY_PATH)
2.12
2.13 @@ -157,6 +158,7 @@
2.14 user = self.env.get_user()
2.15 self.user = user and get_uri(user) or None
2.16 self.preferences = None
2.17 + self.locale = None
2.18 self.requests = None
2.19
2.20 self.out = self.env.get_output()
2.21 @@ -197,15 +199,28 @@
2.22
2.23 # Preference methods.
2.24
2.25 - def set_user_locale(self):
2.26 - lang = self.get_preferences().get("LANG")
2.27 - locale.setlocale(locale.LC_TIME, lang or "C")
2.28 + def get_user_locale(self):
2.29 + if not self.locale:
2.30 + self.locale = self.get_preferences().get("LANG", "C")
2.31 + return self.locale
2.32
2.33 def get_preferences(self):
2.34 if not self.preferences:
2.35 self.preferences = Preferences(self.user)
2.36 return self.preferences
2.37
2.38 + def format_date(self, dt, format):
2.39 + return self._format_datetime(babel.dates.format_date, dt, format)
2.40 +
2.41 + def format_time(self, dt, format):
2.42 + return self._format_datetime(babel.dates.format_time, dt, format)
2.43 +
2.44 + def format_datetime(self, dt, format):
2.45 + return self._format_datetime(babel.dates.format_datetime, dt, format)
2.46 +
2.47 + def _format_datetime(self, fn, dt, format):
2.48 + return fn(dt, format=format, locale=self.get_user_locale())
2.49 +
2.50 # Data management methods.
2.51
2.52 def remove_request(self, uid):
2.53 @@ -308,7 +323,7 @@
2.54 if name in ["DTSTART", "DTEND"]:
2.55 value, attr = get_item(details, name)
2.56 tzid = attr.get("TZID")
2.57 - value = to_timezone(get_datetime(value), tzid).strftime("%c")
2.58 + value = self.format_datetime(to_timezone(get_datetime(value), tzid), "full")
2.59 self.page.dt(name)
2.60 self.page.dd(value)
2.61 else:
2.62 @@ -337,8 +352,8 @@
2.63 for t in have_conflict(freebusy, [(dtstart, dtend)], True):
2.64 start, end, found_uid = t[:3]
2.65 if uid != found_uid:
2.66 - start = to_timezone(get_datetime(start), tzid).strftime("%c")
2.67 - end = to_timezone(get_datetime(end), tzid).strftime("%c")
2.68 + start = self.format_datetime(to_timezone(get_datetime(start), tzid), "full")
2.69 + end = self.format_datetime(to_timezone(get_datetime(end), tzid), "full")
2.70 self.page.p("Event conflicts with another from %s to %s." % (start, end))
2.71
2.72 def show_requests_on_page(self):
2.73 @@ -434,7 +449,9 @@
2.74
2.75 page.tr()
2.76 page.th(class_="timeslot")
2.77 - page.add(dt.strftime("%c"))
2.78 + page.add(self.format_date(dt, "full"))
2.79 + page.br()
2.80 + page.add(self.format_time(dt, "long"))
2.81 page.th.close()
2.82
2.83 for t in active:
2.84 @@ -461,8 +478,6 @@
2.85
2.86 "Select the desired action and show the result."
2.87
2.88 - self.set_user_locale()
2.89 -
2.90 path_info = self.env.get_path_info().strip("/")
2.91
2.92 if not path_info: