Fixed #26281 -- Added a helpful error message for an invalid format specifier to dateformat.format().
This commit is contained in:
parent
b040ac06eb
commit
45c7acdc50
|
@ -767,10 +767,10 @@ def time(value, arg=None):
|
||||||
return ''
|
return ''
|
||||||
try:
|
try:
|
||||||
return formats.time_format(value, arg)
|
return formats.time_format(value, arg)
|
||||||
except AttributeError:
|
except (AttributeError, TypeError):
|
||||||
try:
|
try:
|
||||||
return time_format(value, arg)
|
return time_format(value, arg)
|
||||||
except AttributeError:
|
except (AttributeError, TypeError):
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,11 @@ class Formatter(object):
|
||||||
pieces = []
|
pieces = []
|
||||||
for i, piece in enumerate(re_formatchars.split(force_text(formatstr))):
|
for i, piece in enumerate(re_formatchars.split(force_text(formatstr))):
|
||||||
if i % 2:
|
if i % 2:
|
||||||
|
if type(self.data) is datetime.date and hasattr(TimeFormat, piece):
|
||||||
|
raise TypeError(
|
||||||
|
"The format for date objects may not contain "
|
||||||
|
"time-related format specifiers (found '%s')." % piece
|
||||||
|
)
|
||||||
pieces.append(force_text(getattr(self, piece)()))
|
pieces.append(force_text(getattr(self, piece)()))
|
||||||
elif piece:
|
elif piece:
|
||||||
pieces.append(re_escaped.sub(r'\1', piece))
|
pieces.append(re_escaped.sub(r'\1', piece))
|
||||||
|
|
|
@ -153,3 +153,14 @@ class DateFormatTests(SimpleTestCase):
|
||||||
|
|
||||||
# Ticket #16924 -- We don't need timezone support to test this
|
# Ticket #16924 -- We don't need timezone support to test this
|
||||||
self.assertEqual(dateformat.format(aware_dt, 'O'), '-0330')
|
self.assertEqual(dateformat.format(aware_dt, 'O'), '-0330')
|
||||||
|
|
||||||
|
def test_invalid_time_format_specifiers(self):
|
||||||
|
my_birthday = date(1984, 8, 7)
|
||||||
|
|
||||||
|
for specifier in ['a', 'A', 'f', 'g', 'G', 'h', 'H', 'i', 'P', 's', 'u']:
|
||||||
|
msg = (
|
||||||
|
"The format for date objects may not contain time-related "
|
||||||
|
"format specifiers (found '%s')." % specifier
|
||||||
|
)
|
||||||
|
with self.assertRaisesMessage(TypeError, msg):
|
||||||
|
dateformat.format(my_birthday, specifier)
|
||||||
|
|
Loading…
Reference in New Issue