mirror of https://github.com/django/django.git
Fixed #15263 -- Added support for format localization to the now template tag. Thanks to danielr and dmclain.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16172 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
032b4ab5df
commit
0322f2b653
|
@ -2,12 +2,14 @@
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import re
|
import re
|
||||||
|
from datetime import datetime
|
||||||
from itertools import groupby, cycle as itertools_cycle
|
from itertools import groupby, cycle as itertools_cycle
|
||||||
|
|
||||||
from django.template.base import Node, NodeList, Template, Context, Variable
|
from django.template.base import Node, NodeList, Template, Context, Variable
|
||||||
from django.template.base import TemplateSyntaxError, VariableDoesNotExist, BLOCK_TAG_START, BLOCK_TAG_END, VARIABLE_TAG_START, VARIABLE_TAG_END, SINGLE_BRACE_START, SINGLE_BRACE_END, COMMENT_TAG_START, COMMENT_TAG_END
|
from django.template.base import TemplateSyntaxError, VariableDoesNotExist, BLOCK_TAG_START, BLOCK_TAG_END, VARIABLE_TAG_START, VARIABLE_TAG_END, SINGLE_BRACE_START, SINGLE_BRACE_END, COMMENT_TAG_START, COMMENT_TAG_END
|
||||||
from django.template.base import get_library, Library, InvalidTemplateLibrary
|
from django.template.base import get_library, Library, InvalidTemplateLibrary
|
||||||
from django.template.smartif import IfParser, Literal
|
from django.template.smartif import IfParser, Literal
|
||||||
|
from django.template.defaultfilters import date
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.utils.encoding import smart_str, smart_unicode
|
from django.utils.encoding import smart_str, smart_unicode
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
|
@ -380,10 +382,7 @@ class NowNode(Node):
|
||||||
self.format_string = format_string
|
self.format_string = format_string
|
||||||
|
|
||||||
def render(self, context):
|
def render(self, context):
|
||||||
from datetime import datetime
|
return date(datetime.now(), self.format_string)
|
||||||
from django.utils.dateformat import DateFormat
|
|
||||||
df = DateFormat(datetime.now())
|
|
||||||
return df.format(self.format_string)
|
|
||||||
|
|
||||||
class SpacelessNode(Node):
|
class SpacelessNode(Node):
|
||||||
def __init__(self, nodelist):
|
def __init__(self, nodelist):
|
||||||
|
|
|
@ -727,6 +727,18 @@ escaped, because it's not a format character::
|
||||||
|
|
||||||
This would display as "It is the 4th of September".
|
This would display as "It is the 4th of September".
|
||||||
|
|
||||||
|
.. versionchanged:: 1.4
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The format passed can also be one of the predefined ones
|
||||||
|
:setting:`DATE_FORMAT`, :setting:`DATETIME_FORMAT`,
|
||||||
|
:setting:`SHORT_DATE_FORMAT` or :setting:`SHORT_DATETIME_FORMAT`.
|
||||||
|
The predefined formats may vary depending on the current locale and
|
||||||
|
if :ref:`format-localization` is enabled, e.g.::
|
||||||
|
|
||||||
|
It is {% now "SHORT_DATETIME_FORMAT" %}
|
||||||
|
|
||||||
.. templatetag:: regroup
|
.. templatetag:: regroup
|
||||||
|
|
||||||
regroup
|
regroup
|
||||||
|
|
|
@ -305,6 +305,7 @@ class FormattingTests(TestCase):
|
||||||
self.assertEqual(u'10:15:48', Template('{{ t|time:"TIME_FORMAT" }}').render(self.ctxt))
|
self.assertEqual(u'10:15:48', Template('{{ t|time:"TIME_FORMAT" }}').render(self.ctxt))
|
||||||
self.assertEqual(u'31/12/2009', Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(self.ctxt))
|
self.assertEqual(u'31/12/2009', Template('{{ d|date:"SHORT_DATE_FORMAT" }}').render(self.ctxt))
|
||||||
self.assertEqual(u'31/12/2009 20:50', Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(self.ctxt))
|
self.assertEqual(u'31/12/2009 20:50', Template('{{ dt|date:"SHORT_DATETIME_FORMAT" }}').render(self.ctxt))
|
||||||
|
self.assertEqual(date_format(datetime.datetime.now(), "DATE_FORMAT"), Template('{% now "DATE_FORMAT" %}').render(self.ctxt))
|
||||||
|
|
||||||
form4 = I18nForm({
|
form4 = I18nForm({
|
||||||
'decimal_field': u'66666,666',
|
'decimal_field': u'66666,666',
|
||||||
|
|
|
@ -21,6 +21,7 @@ from django.template.loaders import app_directories, filesystem, cached
|
||||||
from django.test.utils import get_warnings_state, restore_warnings_state,\
|
from django.test.utils import get_warnings_state, restore_warnings_state,\
|
||||||
setup_test_template_loader, restore_template_loaders
|
setup_test_template_loader, restore_template_loaders
|
||||||
from django.utils import unittest
|
from django.utils import unittest
|
||||||
|
from django.utils.formats import date_format
|
||||||
from django.utils.translation import activate, deactivate, ugettext as _
|
from django.utils.translation import activate, deactivate, ugettext as _
|
||||||
from django.utils.safestring import mark_safe
|
from django.utils.safestring import mark_safe
|
||||||
from django.utils.tzinfo import LocalTimezone
|
from django.utils.tzinfo import LocalTimezone
|
||||||
|
@ -1422,6 +1423,8 @@ class Templates(unittest.TestCase):
|
||||||
'now02': ('{% now "j "n" Y"%}', {}, template.TemplateSyntaxError),
|
'now02': ('{% now "j "n" Y"%}', {}, template.TemplateSyntaxError),
|
||||||
# 'now03': ('{% now "j \"n\" Y"%}', {}, str(datetime.now().day) + '"' + str(datetime.now().month) + '"' + str(datetime.now().year)),
|
# 'now03': ('{% now "j \"n\" Y"%}', {}, str(datetime.now().day) + '"' + str(datetime.now().month) + '"' + str(datetime.now().year)),
|
||||||
# 'now04': ('{% now "j \nn\n Y"%}', {}, str(datetime.now().day) + '\n' + str(datetime.now().month) + '\n' + str(datetime.now().year))
|
# 'now04': ('{% now "j \nn\n Y"%}', {}, str(datetime.now().day) + '\n' + str(datetime.now().month) + '\n' + str(datetime.now().year))
|
||||||
|
# Check parsing of locale strings
|
||||||
|
'now05': ('{% now "DATE_FORMAT" %}', {}, date_format(datetime.now())),
|
||||||
|
|
||||||
### URL TAG ########################################################
|
### URL TAG ########################################################
|
||||||
# Successes
|
# Successes
|
||||||
|
|
Loading…
Reference in New Issue