author | Tero Marttila <terom@fixme.fi> |
Thu, 20 Jan 2011 23:14:07 +0200 | |
changeset 58 | 4f4150296cd3 |
permissions | -rw-r--r-- |
58
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
1 |
""" |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
2 |
Miscellanous bucket of everything |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
3 |
""" |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
4 |
|
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
5 |
import datetime |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
6 |
import time |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
7 |
|
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
8 |
class LocalTimezone (datetime.tzinfo) : |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
9 |
""" |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
10 |
Our platform's (the 'time' module) idea of our local timezone. |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
11 |
""" |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
12 |
|
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
13 |
ZERO = datetime.timedelta(0) |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
14 |
|
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
15 |
STDOFFSET = datetime.timedelta(seconds = -time.timezone) |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
16 |
|
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
17 |
if time.daylight: |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
18 |
DSTOFFSET = datetime.timedelta(seconds = -time.altzone) |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
19 |
else: |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
20 |
DSTOFFSET = STDOFFSET |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
21 |
|
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
22 |
DSTDIFF = DSTOFFSET - STDOFFSET |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
23 |
|
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
24 |
def _isdst (self, dt) : |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
25 |
# time tuple in local time |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
26 |
tt = (dt.year, dt.month, dt.day, |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
27 |
dt.hour, dt.minute, dt.second, |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
28 |
dt.weekday(), 0, -1) |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
29 |
|
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
30 |
# to UTC timestamp |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
31 |
stamp = time.mktime(tt) |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
32 |
|
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
33 |
# roundtrip.. |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
34 |
tt = time.localtime(stamp) |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
35 |
|
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
36 |
# to figure out DST flag |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
37 |
return tt.tm_isdst > 0 |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
38 |
|
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
39 |
def utcoffset (self, dt) : |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
40 |
if self._isdst(dt) : |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
41 |
return self.DSTOFFSET |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
42 |
else: |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
43 |
return self.STDOFFSET |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
44 |
|
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
45 |
def dst (self, dt) : |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
46 |
if self._isdst(dt) : |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
47 |
return self.DSTDIFF |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
48 |
else: |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
49 |
return self.ZERO |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
50 |
|
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
51 |
def tzname (self, dt) : |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
52 |
# varies by DST |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
53 |
return time.tzname[self._isdst(dt)] |
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
54 |
|
4f4150296cd3
controllers: tidy up PageHandler a little
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
55 |