﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
654	DateFormat should be a subclass of TimeFormat, not Formatter	Tom Tobin <korpios@…>	Adrian Holovaty	"django.utils.dateformat.DateFormat is currently a subclass of Formatter, not TimeFormat.  As a result, calls to, e.g., dateformat.format will fail if they contain characters referencing units handled by TimeFormat.

Example traceback:

{{{
There's been an error:

Traceback (most recent call last):

  File ""/home/korpios/devel/py3p/django/core/handlers/base.py"", line 68, in get_response
    response = callback(request, **param_dict)

  File ""/home/korpios/devel/py3p/django/contrib/admin/views/decorators.py"", line 49, in _checklogin
    return view_func(request, *args, **kwargs)

  File ""/home/korpios/devel/py3p/django/contrib/admin/views/main.py"", line 1110, in history
    }, context_instance=Context(request))

  File ""/home/korpios/devel/py3p/django/core/extensions.py"", line 11, in render_to_response
    return HttpResponse(loader.render_to_string(*args, **kwargs))

  File ""/home/korpios/devel/py3p/django/core/template/loader.py"", line 82, in render_to_string
    return t.render(context_instance)

  File ""/home/korpios/devel/py3p/django/core/template/__init__.py"", line 116, in render
    return self.nodelist.render(context)

  File ""/home/korpios/devel/py3p/django/core/template/__init__.py"", line 443, in render
    bits.append(node.render(context))

  File ""/home/korpios/devel/py3p/django/core/template/loader.py"", line 161, in render
    return compiled_parent.render(context)

  File ""/home/korpios/devel/py3p/django/core/template/__init__.py"", line 116, in render
    return self.nodelist.render(context)

  File ""/home/korpios/devel/py3p/django/core/template/__init__.py"", line 443, in render
    bits.append(node.render(context))

  File ""/home/korpios/devel/py3p/django/core/template/loader.py"", line 161, in render
    return compiled_parent.render(context)

  File ""/home/korpios/devel/py3p/django/core/template/__init__.py"", line 116, in render
    return self.nodelist.render(context)

  File ""/home/korpios/devel/py3p/django/core/template/__init__.py"", line 443, in render
    bits.append(node.render(context))

  File ""/home/korpios/devel/py3p/django/core/template/loader.py"", line 106, in render
    result = self.nodelist.render(context)

  File ""/home/korpios/devel/py3p/django/core/template/__init__.py"", line 443, in render
    bits.append(node.render(context))

  File ""/home/korpios/devel/py3p/django/core/template/defaulttags.py"", line 178, in render
    return self.nodelist_true.render(context)

  File ""/home/korpios/devel/py3p/django/core/template/__init__.py"", line 443, in render
    bits.append(node.render(context))

  File ""/home/korpios/devel/py3p/django/core/template/defaulttags.py"", line 111, in render
    nodelist.append(node.render(context))

  File ""/home/korpios/devel/py3p/django/core/template/__init__.py"", line 473, in render
    output = resolve_variable_with_filters(self.var_string, context)

  File ""/home/korpios/devel/py3p/django/core/template/__init__.py"", line 418, in resolve_variable_with_filters
    obj = registered_filters[name][0](obj, arg)

  File ""/home/korpios/devel/py3p/django/core/template/defaultfilters.py"", line 317, in date
    return format(value, arg)

  File ""/home/korpios/devel/py3p/django/utils/dateformat.py"", line 238, in format
    return df.format(format_string)

  File ""/home/korpios/devel/py3p/django/utils/dateformat.py"", line 26, in format
    pieces.append(str(getattr(self, piece)()))

AttributeError: DateFormat instance has no attribute 'P'
}}}

Solution: have django.utils.dateformat.DateFormat subclass TimeFormat.
"	defect	closed	Tools		normal	fixed			Unreviewed	0	0	0	0	0	0
