1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
from xml.sax import make_parser
from xml.sax.handler import ContentHandler
from os import environ, unlink, symlink
import time
class Timezones:
class parseTimezones(ContentHandler):
def __init__(self, timezones):
self.isPointsElement, self.isReboundsElement = 0, 0
self.timezones = timezones
def startElement(self, name, attrs):
if (name == "zone"):
self.timezones.append((attrs.get('name',""), attrs.get('zone',"")))
def __init__(self):
self.timezones = []
self.readTimezonesFromFile()
def readTimezonesFromFile(self):
parser = make_parser()
try:
timezonesHandler = self.parseTimezones(self.timezones)
parser.setContentHandler(timezonesHandler)
parser.parse('/etc/timezone.xml')
except:
pass
if len(self.timezones) == 0:
self.timezones = [("UTC", "UTC")]
def activateTimezone(self, index):
if len(self.timezones) <= index:
return
environ['TZ'] = self.timezones[index][1]
try:
unlink("/etc/localtime")
except OSError:
pass
try:
symlink("/usr/share/zoneinfo/%s" %(self.timezones[index][1]), "/etc/localtime")
except OSError:
pass
try:
time.tzset()
except:
from enigma import e_tzset
e_tzset()
def getTimezoneList(self):
return [ str(x[0]) for x in self.timezones ]
def getDefaultTimezone(self):
# TODO return something more useful - depending on country-settings?
t = "(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Vienna"
for (a,b) in self.timezones:
if a == t:
return a
return self.timezones[0][0]
timezones = Timezones()
|