summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2010-02-26 15:33:27 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2010-02-26 15:33:27 +0000
commit46cc7021a8ab60190d81e9d7e039cd84efbafb23 (patch)
tree5f809c291af834fb5a2cd2d122ca849c26062ae3
parent0ff624a3cb075800e6c84cf80e36b085e23cf270 (diff)
Fixed #1480 -- Added the ability to use the system timezone. Thanks to Ramiro Morales for the patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12602 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/conf/__init__.py2
-rw-r--r--django/conf/project_template/settings.py2
-rw-r--r--django/db/backends/postgresql/base.py2
-rw-r--r--django/db/backends/postgresql_psycopg2/base.py2
-rw-r--r--docs/ref/settings.txt50
-rw-r--r--tests/regressiontests/app_loading/tests.py2
6 files changed, 38 insertions, 22 deletions
diff --git a/django/conf/__init__.py b/django/conf/__init__.py
index 24bcd40973..d94f6e9867 100644
--- a/django/conf/__init__.py
+++ b/django/conf/__init__.py
@@ -102,7 +102,7 @@ class Settings(object):
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
diff --git a/django/conf/project_template/settings.py b/django/conf/project_template/settings.py
index 361a36b36b..ee08e9712b 100644
--- a/django/conf/project_template/settings.py
+++ b/django/conf/project_template/settings.py
@@ -23,6 +23,8 @@ DATABASES = {
# 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'
diff --git a/django/db/backends/postgresql/base.py b/django/db/backends/postgresql/base.py
index 500ba5ce03..ec59dd6848 100644
--- a/django/db/backends/postgresql/base.py
+++ b/django/db/backends/postgresql/base.py
@@ -119,7 +119,7 @@ class DatabaseWrapper(BaseDatabaseWrapper):
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['NAME'] == '':
from django.core.exceptions import ImproperlyConfigured
raise ImproperlyConfigured("You need to specify NAME in your Django settings file.")
diff --git a/django/db/backends/postgresql_psycopg2/base.py b/django/db/backends/postgresql_psycopg2/base.py
index b6823f2303..09b9eb4990 100644
--- a/django/db/backends/postgresql_psycopg2/base.py
+++ b/django/db/backends/postgresql_psycopg2/base.py
@@ -113,7 +113,7 @@ class DatabaseWrapper(BaseDatabaseWrapper):
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['NAME'] == '':
from django.core.exceptions import ImproperlyConfigured
raise ImproperlyConfigured("You need to specify NAME in your Django settings file.")
diff --git a/docs/ref/settings.txt b/docs/ref/settings.txt
index 0601e21ab7..9621ec5b12 100644
--- a/docs/ref/settings.txt
+++ b/docs/ref/settings.txt
@@ -1505,28 +1505,42 @@ TIME_ZONE
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.
+
+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.)
+
+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.
-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:
-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.
+ * 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
diff --git a/tests/regressiontests/app_loading/tests.py b/tests/regressiontests/app_loading/tests.py
index 683c6079ad..a1273dfeb0 100644
--- a/tests/regressiontests/app_loading/tests.py
+++ b/tests/regressiontests/app_loading/tests.py
@@ -19,7 +19,7 @@ Test the globbing of INSTALLED_APPS.
>>> 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()