Author: russellm
Date: 2010-02-26 09:38:50 -0600 (Fri, 26 Feb 2010)
New Revision: 12603

Modified:
   django/branches/releases/1.1.X/django/conf/__init__.py
   django/branches/releases/1.1.X/django/conf/project_template/settings.py
   django/branches/releases/1.1.X/django/db/backends/postgresql/base.py
   django/branches/releases/1.1.X/django/db/backends/postgresql_psycopg2/base.py
   django/branches/releases/1.1.X/docs/ref/settings.txt
   django/branches/releases/1.1.X/tests/regressiontests/app_loading/tests.py
Log:
[1.1.X] Fixed #1480 -- Added the ability to use the system timezone. Thanks to 
Ramiro Morales for the patch.

Backport of r12602 from trunk.

Modified: django/branches/releases/1.1.X/django/conf/__init__.py
===================================================================
--- django/branches/releases/1.1.X/django/conf/__init__.py      2010-02-26 
15:33:27 UTC (rev 12602)
+++ django/branches/releases/1.1.X/django/conf/__init__.py      2010-02-26 
15:38:50 UTC (rev 12603)
@@ -102,7 +102,7 @@
                 new_installed_apps.append(app)
         self.INSTALLED_APPS = new_installed_apps
 
-        if hasattr(time, 'tzset'):
+        if hasattr(time, 'tzset') and getattr(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

Modified: 
django/branches/releases/1.1.X/django/conf/project_template/settings.py
===================================================================
--- django/branches/releases/1.1.X/django/conf/project_template/settings.py     
2010-02-26 15:33:27 UTC (rev 12602)
+++ django/branches/releases/1.1.X/django/conf/project_template/settings.py     
2010-02-26 15:38:50 UTC (rev 12603)
@@ -19,6 +19,8 @@
 # Local time zone for this installation. Choices can be found here:
 # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
 # although not all choices may be available on all operating systems.
+# On Unix systems, a value of None will cause Django to use the same
+# timezone as the operating system.
 # If running in a Windows environment this must be set to the same as your
 # system time zone.
 TIME_ZONE = 'America/Chicago'

Modified: django/branches/releases/1.1.X/django/db/backends/postgresql/base.py
===================================================================
--- django/branches/releases/1.1.X/django/db/backends/postgresql/base.py        
2010-02-26 15:33:27 UTC (rev 12602)
+++ django/branches/releases/1.1.X/django/db/backends/postgresql/base.py        
2010-02-26 15:38:50 UTC (rev 12603)
@@ -100,7 +100,7 @@
         set_tz = False
         settings_dict = self.settings_dict
         if self.connection is None:
-            set_tz = True
+            set_tz = settings_dict.get('TIME_ZONE')
             if settings_dict['DATABASE_NAME'] == '':
                 from django.core.exceptions import ImproperlyConfigured
                 raise ImproperlyConfigured("You need to specify DATABASE_NAME 
in your Django settings file.")

Modified: 
django/branches/releases/1.1.X/django/db/backends/postgresql_psycopg2/base.py
===================================================================
--- 
django/branches/releases/1.1.X/django/db/backends/postgresql_psycopg2/base.py   
    2010-02-26 15:33:27 UTC (rev 12602)
+++ 
django/branches/releases/1.1.X/django/db/backends/postgresql_psycopg2/base.py   
    2010-02-26 15:38:50 UTC (rev 12603)
@@ -77,7 +77,7 @@
         set_tz = False
         settings_dict = self.settings_dict
         if self.connection is None:
-            set_tz = True
+            set_tz = settings_dict.get('TIME_ZONE')
             if settings_dict['DATABASE_NAME'] == '':
                 from django.core.exceptions import ImproperlyConfigured
                 raise ImproperlyConfigured("You need to specify DATABASE_NAME 
in your Django settings file.")

Modified: django/branches/releases/1.1.X/docs/ref/settings.txt
===================================================================
--- django/branches/releases/1.1.X/docs/ref/settings.txt        2010-02-26 
15:33:27 UTC (rev 12602)
+++ django/branches/releases/1.1.X/docs/ref/settings.txt        2010-02-26 
15:38:50 UTC (rev 12603)
@@ -1145,29 +1145,43 @@
 
 Default: ``'America/Chicago'``
 
-A string representing the time zone for this installation. `See available 
choices`_.
-(Note that list of available choices lists more than one on the same line;
-you'll want to use just one of the choices for a given time zone. For instance,
-one line says ``'Europe/London GB GB-Eire'``, but you should use the first bit
-of that -- ``'Europe/London'`` -- as your ``TIME_ZONE`` setting.)
+.. versionchanged:: 1.2
+   ``None`` was added as an allowed value.
 
-Note that this is the time zone to which Django will convert all dates/times --
-not necessarily the timezone of the server. For example, one server may serve
-multiple Django-powered sites, each with a separate time-zone setting.
+A string representing the time zone for this installation, or
+``None``. `See available choices`_. (Note that list of available
+choices lists more than one on the same line; you'll want to use just
+one of the choices for a given time zone. For instance, one line says
+``'Europe/London GB GB-Eire'``, but you should use the first bit of
+that -- ``'Europe/London'`` -- as your ``TIME_ZONE`` setting.)
 
-Normally, Django sets the ``os.environ['TZ']`` variable to the time zone you
-specify in the ``TIME_ZONE`` setting. Thus, all your views and models will
-automatically operate in the correct time zone. However, if you're manually
-:ref:`manually configuring settings
-<settings-without-django-settings-module>`, Django will *not* touch the ``TZ``
-environment variable, and it'll be up to you to ensure your processes are
-running in the correct environment.
+Note that this is the time zone to which Django will convert all
+dates/times -- not necessarily the timezone of the server. For
+example, one server may serve multiple Django-powered sites, each with
+a separate time-zone setting.
 
+Normally, Django sets the ``os.environ['TZ']`` variable to the time
+zone you specify in the ``TIME_ZONE`` setting. Thus, all your views
+and models will automatically operate in the correct time zone.
+However, Django won't set the ``TZ`` environment variable under the
+following conditions:
+
+ * If you're using the manual configuration option as described in
+   :ref:`manually configuring settings
+   <settings-without-django-settings-module>`, or
+
+ * If you specify ``TIME_ZONE = None``. This will cause Django to fall
+   back to using the system timezone.
+
+If Django doesn't set the ``TZ`` environment variable, it's up to you
+to ensure your processes are running in the correct environment.
+
 .. note::
-    Django cannot reliably use alternate time zones in a Windows environment.
-    If you're running Django on Windows, this variable must be set to match the
-    system timezone.
+    Django cannot reliably use alternate time zones in a Windows
+    environment. If you're running Django on Windows, this variable
+    must be set to match the system timezone.
 
+
 .. _See available choices: 
http://www.postgresql.org/docs/8.1/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE
 
 .. setting:: URL_VALIDATOR_USER_AGENT

Modified: 
django/branches/releases/1.1.X/tests/regressiontests/app_loading/tests.py
===================================================================
--- django/branches/releases/1.1.X/tests/regressiontests/app_loading/tests.py   
2010-02-26 15:33:27 UTC (rev 12602)
+++ django/branches/releases/1.1.X/tests/regressiontests/app_loading/tests.py   
2010-02-26 15:38:50 UTC (rev 12603)
@@ -19,7 +19,7 @@
 >>> sys.path = old_sys_path
 
 # Undo a side-effect of installing a new settings object.
->>> if hasattr(time, "tzset"):
+>>> if hasattr(time, "tzset") and old_tz:
 ...     os.environ["TZ"] = old_tz
 ...     time.tzset()
 

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-upda...@googlegroups.com.
To unsubscribe from this group, send email to 
django-updates+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to