From d4df074d418ce61b9fca3df7ce887e7a5f54b01f Mon Sep 17 00:00:00 2001
From: Adrian Holovaty <adrian@holovaty.com>
Date: Sun, 6 Nov 2005 23:49:03 +0000
Subject: [PATCH] Fixed #109 -- Created DATE_FORMAT, DATETIME_FORMAT and
 TIME_FORMAT settings.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@1115 bcc190cf-cafb-0310-a4f2-bffc1f526a37
---
 django/conf/global_settings.py     | 12 +++++++++
 django/contrib/admin/views/main.py | 12 +++++----
 docs/settings.txt                  | 39 ++++++++++++++++++++++++++++++
 3 files changed, 58 insertions(+), 5 deletions(-)

diff --git a/django/conf/global_settings.py b/django/conf/global_settings.py
index b8d4d06e58..a95a956234 100644
--- a/django/conf/global_settings.py
+++ b/django/conf/global_settings.py
@@ -154,6 +154,18 @@ MEDIA_ROOT = ''
 # Example: "http://media.lawrence.com"
 MEDIA_URL = ''
 
+# Default formatting for date objects. See all available format strings here:
+# http://www.djangoproject.com/documentation/templates/#now
+DATE_FORMAT = 'N j, Y'
+
+# Default formatting for datetime objects. See all available format strings here:
+# http://www.djangoproject.com/documentation/templates/#now
+DATETIME_FORMAT = 'N j, Y, P'
+
+# Default formatting for time objects. See all available format strings here:
+# http://www.djangoproject.com/documentation/templates/#now
+TIME_FORMAT = 'P'
+
 ##############
 # MIDDLEWARE #
 ##############
diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py
index b188f58947..c4bbee633f 100644
--- a/django/contrib/admin/views/main.py
+++ b/django/contrib/admin/views/main.py
@@ -10,7 +10,7 @@ from django.models.admin import log
 from django.utils.html import strip_tags
 from django.utils.httpwrappers import HttpResponse, HttpResponseRedirect
 from django.utils.text import capfirst, get_text_list
-from django.conf.settings import ADMIN_MEDIA_PREFIX
+from django.conf.settings import ADMIN_MEDIA_PREFIX, DATE_FORMAT, DATETIME_FORMAT, TIME_FORMAT
 import operator
 
 # Text to display within changelist table cells if the value is blank.
@@ -401,13 +401,15 @@ def change_list(request, app_label, module_name):
                             result_repr = getattr(result, 'get_%s' % f.name)()
                         else:
                             result_repr = EMPTY_CHANGELIST_VALUE
-                    # Dates are special: They're formatted in a certain way.
-                    elif isinstance(f, meta.DateField):
+                    # Dates and times are special: They're formatted in a certain way.
+                    elif isinstance(f, meta.DateField) or isinstance(f, meta.TimeField):
                         if field_val:
                             if isinstance(f, meta.DateTimeField):
-                                result_repr = dateformat.format(field_val, 'N j, Y, P')
+                                result_repr = capfirst(dateformat.format(field_val, DATETIME_FORMAT))
+                            elif isinstance(f, meta.TimeField):
+                                result_repr = capfirst(dateformat.time_format(field_val, TIME_FORMAT))
                             else:
-                                result_repr = dateformat.format(field_val, 'N j, Y')
+                                result_repr = capfirst(dateformat.format(field_val, DATE_FORMAT))
                         else:
                             result_repr = EMPTY_CHANGELIST_VALUE
                         row_class = ' class="nowrap"'
diff --git a/docs/settings.txt b/docs/settings.txt
index e5dd32f4c1..f14d48b257 100644
--- a/docs/settings.txt
+++ b/docs/settings.txt
@@ -258,6 +258,32 @@ Default: ``''`` (Empty string)
 
 The username to use when connecting to the database. Not used with SQLite.
 
+DATE_FORMAT
+-----------
+
+Default: ``'N j, Y'`` (e.g. ``Feb. 4, 2003``)
+
+The default formatting to use for date fields on Django admin change-list
+pages -- and, possibly, by other parts of the system. See
+`allowed date format strings`_.
+
+See also DATETIME_FORMAT and TIME_FORMAT.
+
+.. _allowed date format strings: http://www.djangoproject.com/documentation/templates/#now
+
+DATETIME_FORMAT
+---------------
+
+Default: ``'N j, Y, P'`` (e.g. ``Feb. 4, 2003, 4 p.m.``)
+
+The default formatting to use for datetime fields on Django admin change-list
+pages -- and, possibly, by other parts of the system. See
+`allowed date format strings`_.
+
+See also DATE_FORMAT and TIME_FORMAT.
+
+.. _allowed date format strings: http://www.djangoproject.com/documentation/templates/#now
+
 DEBUG
 -----
 
@@ -482,6 +508,19 @@ Default: ``('django.core.template.loaders.filesystem.load_template_source',)``
 A tuple of callables (as strings) that know how to import templates from
 various sources. See the `template documentation`_.
 
+TIME_FORMAT
+-----------
+
+Default: ``'P'`` (e.g. ``4 p.m.``)
+
+The default formatting to use for time fields on Django admin change-list
+pages -- and, possibly, by other parts of the system. See
+`allowed date format strings`_.
+
+See also DATE_FORMAT and DATETIME_FORMAT.
+
+.. _allowed date format strings: http://www.djangoproject.com/documentation/templates/#now
+
 TIME_ZONE
 ---------