From 27265f70a18ab8fb4bfacad0cdebe170c342054c Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Fri, 10 Sep 2010 19:36:51 +0000 Subject: [PATCH] When possible, sanity check the timezone setting to see if the Unix-like box it's running on supports that setting. If checking isn't possible, we skip it. Patch from seveas. Thanks. Fixed #3415. git-svn-id: http://code.djangoproject.com/svn/django/trunk@13722 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/conf/__init__.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/django/conf/__init__.py b/django/conf/__init__.py index d94f6e9867..bda0ef3691 100644 --- a/django/conf/__init__.py +++ b/django/conf/__init__.py @@ -103,6 +103,12 @@ class Settings(object): self.INSTALLED_APPS = new_installed_apps if hasattr(time, 'tzset') and getattr(self, 'TIME_ZONE'): + # When we can, attempt to validate the timezone. If we can't find + # this file, no check happens and it's harmless. + zoneinfo_root = '/usr/share/zoneinfo' + if (os.path.exists(zoneinfo_root) and not + os.path.exists(os.path.join(zoneinfo_root, *(self.TIME_ZONE.split('/'))))): + raise ValueError("Incorrect timezone setting: %s" % self.TIME_ZONE) # Move the time zone info into os.environ. See ticket #2315 for why # we don't do this unconditionally (breaks Windows). os.environ['TZ'] = self.TIME_ZONE