From 3a0a556a65368f02635606e4eb707ca08e25007a Mon Sep 17 00:00:00 2001 From: Alexandru DAMIAN Date: Fri, 28 Mar 2014 14:43:48 +0000 Subject: toaster: fix timezone detection This patch replaces faulty timezone detection with a version that simply reads the TZ environment variable if it is set. If the TZ is not set, we do a reverse match search among known timezone definitions and take the first match. [YOCTO #5499] Signed-off-by: Alexandru DAMIAN --- lib/toaster/toastermain/settings.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'lib/toaster/toastermain/settings.py') diff --git a/lib/toaster/toastermain/settings.py b/lib/toaster/toastermain/settings.py index 51fa3ccd0..e26ee3c9e 100644 --- a/lib/toaster/toastermain/settings.py +++ b/lib/toaster/toastermain/settings.py @@ -50,9 +50,23 @@ ALLOWED_HOSTS = [] # although not all choices may be available on all operating systems. # In a Windows environment this must be set to your system time zone. -# Always use local computer's time zone -import time -TIME_ZONE = time.tzname[0] +# Always use local computer's time zone, find +import os, hashlib +if 'TZ' in os.environ: + TIME_ZONE = os.environ['TZ'] +else: + # need to read the /etc/localtime file which is the libc standard + # and do a reverse-mapping to /usr/share/zoneinfo/; + # since the timezone may match any number of identical timezone definitions, + + zonefilelist = {} + ZONEINFOPATH = '/usr/share/zoneinfo/' + for dirpath, dirnames, filenames in os.walk(ZONEINFOPATH): + for fn in filenames: + filepath = os.path.join(dirpath, fn) + zonefilelist[hashlib.md5(open(filepath).read()).hexdigest()] = filepath.lstrip(ZONEINFOPATH).strip() + + TIME_ZONE = zonefilelist[hashlib.md5(open('/etc/localtime').read()).hexdigest()] # Language code for this installation. All choices can be found here: # http://www.i18nguy.com/unicode/language-identifiers.html -- cgit 1.2.3-korg