annotate tools/tz.py @ 264:91c0902de04d
Fixing #115: time zone picker javascript doesn't work on IE8. Apparently IE doesn't like array.indexOf(), but jQuery saves the day with a utility function that provides the same functionality.
author |
Brian Neal <bgneal@gmail.com> |
date |
Thu, 23 Sep 2010 01:16:26 +0000 |
parents |
ed6202fb08b6 |
children |
|
rev |
line source |
bgneal@245
|
1 """
|
bgneal@245
|
2 This program generates the data used by the timezone.js Javascript.
|
bgneal@245
|
3 This data is used to create the 2 dropdown select boxes for timezones.
|
bgneal@245
|
4 """
|
bgneal@245
|
5 import pytz
|
bgneal@245
|
6 from pprint import pprint
|
bgneal@245
|
7
|
bgneal@245
|
8 def format_locations(locs):
|
bgneal@245
|
9 ss = ["[%s]" % ", ".join(["'%s'" % l for l in loc]) for loc in locs]
|
bgneal@245
|
10 return "%s" % ",\n".join(ss)
|
bgneal@245
|
11
|
bgneal@245
|
12 # get a list of areas
|
bgneal@245
|
13
|
bgneal@245
|
14 zones = [z.split('/') for z in pytz.common_timezones]
|
bgneal@245
|
15 areas = set([zone[0] for zone in zones if len(zone) > 1])
|
bgneal@245
|
16 areas = list(areas)
|
bgneal@245
|
17 areas.sort()
|
bgneal@245
|
18
|
bgneal@245
|
19 locations = dict([(area, []) for area in areas])
|
bgneal@245
|
20
|
bgneal@245
|
21 #pprint(locations)
|
bgneal@245
|
22
|
bgneal@245
|
23 for zone in pytz.common_timezones:
|
bgneal@245
|
24 if zone.count('/') == 0:
|
bgneal@245
|
25 continue
|
bgneal@245
|
26 area, loc = zone.split('/', 1)
|
bgneal@245
|
27 if area in locations:
|
bgneal@245
|
28 locations[area].append(loc.replace('_', ' '))
|
bgneal@245
|
29
|
bgneal@245
|
30 #pprint(locations)
|
bgneal@245
|
31
|
bgneal@245
|
32 for area in locations.iterkeys():
|
bgneal@245
|
33 locations[area].sort()
|
bgneal@245
|
34
|
bgneal@245
|
35 locs = []
|
bgneal@245
|
36 for area in areas:
|
bgneal@245
|
37 locs.append(locations[area])
|
bgneal@245
|
38
|
bgneal@245
|
39 #pprint(locs)
|
bgneal@245
|
40
|
bgneal@245
|
41 default_area = areas.index('US')
|
bgneal@245
|
42 default_location = locs[default_area].index('Pacific')
|
bgneal@245
|
43
|
bgneal@245
|
44 print """\
|
bgneal@245
|
45 var gcalTzInfo = {
|
bgneal@245
|
46 areas: [%s],
|
bgneal@245
|
47 locations: [%s],
|
bgneal@245
|
48 default_area: %s,
|
bgneal@245
|
49 default_location: %s
|
bgneal@245
|
50 };
|
bgneal@245
|
51 """ % (", ".join(["'%s'" % area for area in areas]),
|
bgneal@245
|
52 format_locations(locs),
|
bgneal@245
|
53 default_area,
|
bgneal@245
|
54 default_location,
|
bgneal@245
|
55 )
|