#23714: Django-1.7 doesn't display 500 error pages during DST change
-------------------------------+--------------------------------------
Reporter: mbertheau | Owner: nobody
Type: Uncategorized | Status: new
Component: Uncategorized | Version: 1.7
Severity: Normal | Resolution:
Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------+--------------------------------------
Changes (by mbertheau):
* needs_better_patch: => 0
* needs_tests: => 0
* needs_docs: => 0
Old description:
> When an exception, that would normally - with `DEBUG=True` - be displayed
> in the detailed 500 page, occurs during the DST/no-DST ambiguous hour of
> the geographical area that is set as TIMEZONE, the handler crashes with
> `AmbiguousTimeError`. This seriously limits the ability of many
> developers to develop and Django applications for a time span of 1/8760
> of the year. This is unacceptable! ^^
>
> {{{
> 2014-10-26 02:40:14,104 ERROR django.request
> :handle_uncaught_exception 231 Internal Server Error:
> /dashboard/suppliers/
> Traceback (most recent call last):
> File "/home/markus/src/django/django/core/handlers/base.py", line 111,
> in get_response
> response = wrapped_callback(request, *callback_args,
> **callback_kwargs)
> File "/home/markus/src/django/django/db/transaction.py", line 394, in
> inner
> return func(*args, **kwargs)
> File "/home/markus/src/django/django/contrib/auth/decorators.py", line
> 22, in _wrapped_view
> return view_func(request, *args, **kwargs)
> File "/home/markus/src/django/django/contrib/auth/decorators.py", line
> 22, in _wrapped_view
> return view_func(request, *args, **kwargs)
> File "/home/markus/src/django/django/views/generic/base.py", line 69,
> in view
> return self.dispatch(request, *args, **kwargs)
> File "/home/markus/src/django/django/views/generic/base.py", line 87,
> in dispatch
> return handler(request, *args, **kwargs)
> File "/home/markus/src/django/django/views/generic/list.py", line 145,
> in get
> self.object_list = self.get_queryset()
> File "/home/markus/src/machtfit/apps/dashboard/supplier/views.py", line
> 44, in get_queryset
> .annotate(num_orders=Count('partner__order_line')))
> File "/home/markus/src/django/django/db/models/query.py", line 802, in
> annotate
> is_summary=False)
> File "/home/markus/src/django/django/db/models/sql/query.py", line
> 1012, in add_aggregate
> field_list, opts, self.get_initial_alias())
> File "/home/markus/src/django/django/db/models/sql/query.py", line
> 1419, in setup_joins
> names, opts, allow_many, fail_on_missing=True)
> File "/home/markus/src/django/django/db/models/sql/query.py", line
> 1383, in names_to_path
> self.raise_field_error(opts, name)
> File "/home/markus/src/django/django/db/models/sql/query.py", line
> 1389, in raise_field_error
> "Choices are: %s" % (name, ", ".join(available)))
> FieldError: Cannot resolve keyword u'order_line' into field. Choices are:
> <irrelevant>
> Traceback (most recent call last):
> File "/usr/lib/python2.7/wsgiref/handlers.py", line 85, in run
> self.result = application(self.environ, self.start_response)
> File "/home/markus/src/django/django/contrib/staticfiles/handlers.py",
> line 64, in __call__
> return self.application(environ, start_response)
> File "/home/markus/src/django/django/core/handlers/wsgi.py", line 187,
> in __call__
> response = self.get_response(request)
> File "/home/markus/src/django/django/core/handlers/base.py", line 199,
> in get_response
> response = self.handle_uncaught_exception(request, resolver,
> sys.exc_info())
> File "/home/markus/src/django/django/core/handlers/base.py", line 236,
> in handle_uncaught_exception
> return debug.technical_500_response(request, *exc_info)
> File "/home/markus/src/django/django/views/debug.py", line 91, in
> technical_500_response
> html = reporter.get_traceback_html()
> File "/home/markus/src/django/django/views/debug.py", line 350, in
> get_traceback_html
> return t.render(c)
> File "/home/markus/src/django/django/template/base.py", line 148, in
> render
> return self._render(context)
> File "/home/markus/src/django/django/test/utils.py", line 88, in
> instrumented_test_render
> return self.nodelist.render(context)
> File "/home/markus/src/django/django/template/base.py", line 844, in
> render
> bit = self.render_node(node, context)
> File "/home/markus/src/django/django/template/debug.py", line 80, in
> render_node
> return node.render(context)
> File "/home/markus/src/django/django/template/debug.py", line 90, in
> render
> output = self.filter_expression.resolve(context)
> File "/home/markus/src/django/django/template/base.py", line 624, in
> resolve
> new_obj = func(obj, *arg_vals)
> File "/home/markus/src/django/django/template/defaultfilters.py", line
> 769, in date
> return format(value, arg)
> File "/home/markus/src/django/django/utils/dateformat.py", line 343, in
> format
> return df.format(format_string)
> File "/home/markus/src/django/django/utils/dateformat.py", line 35, in
> format
> pieces.append(force_text(getattr(self, piece)()))
> File "/home/markus/src/django/django/utils/dateformat.py", line 268, in
> r
> return self.format('D, j M Y H:i:s O')
> File "/home/markus/src/django/django/utils/dateformat.py", line 35, in
> format
> pieces.append(force_text(getattr(self, piece)()))
> File "/home/markus/src/django/django/utils/dateformat.py", line 136, in
> O
> seconds = self.Z()
> File "/home/markus/src/django/django/utils/dateformat.py", line 189, in
> Z
> offset = self.timezone.utcoffset(self.data)
> File "/home/markus/.virtualenvs/machtfit/local/lib/python2.7/site-
> packages/pytz/tzinfo.py", line 406, in utcoffset
> dt = self.localize(dt, is_dst)
> File "/home/markus/.virtualenvs/machtfit/local/lib/python2.7/site-
> packages/pytz/tzinfo.py", line 349, in localize
> raise AmbiguousTimeError(dt)
> AmbiguousTimeError: 2014-10-26 02:40:14.190834
>
> }}}
New description:
When an exception, that would normally - with `DEBUG=True` - be displayed
in the detailed 500 page, occurs during the DST/no-DST ambiguous hour of
the geographical area that is set as TIMEZONE, the handler crashes with
`AmbiguousTimeError`. This seriously limits the ability of many developers
to develop and Django applications for a time span of 1/8760 of the year.
This is unacceptable! ;)
{{{
2014-10-26 02:40:14,104 ERROR django.request
:handle_uncaught_exception 231 Internal Server Error:
/dashboard/suppliers/
Traceback (most recent call last):
File "/home/markus/src/django/django/core/handlers/base.py", line 111,
in get_response
response = wrapped_callback(request, *callback_args,
**callback_kwargs)
File "/home/markus/src/django/django/db/transaction.py", line 394, in
inner
return func(*args, **kwargs)
File "/home/markus/src/django/django/contrib/auth/decorators.py", line
22, in _wrapped_view
return view_func(request, *args, **kwargs)
File "/home/markus/src/django/django/contrib/auth/decorators.py", line
22, in _wrapped_view
return view_func(request, *args, **kwargs)
File "/home/markus/src/django/django/views/generic/base.py", line 69, in
view
return self.dispatch(request, *args, **kwargs)
File "/home/markus/src/django/django/views/generic/base.py", line 87, in
dispatch
return handler(request, *args, **kwargs)
File "/home/markus/src/django/django/views/generic/list.py", line 145,
in get
self.object_list = self.get_queryset()
File "/home/markus/src/machtfit/apps/dashboard/supplier/views.py", line
44, in get_queryset
.annotate(num_orders=Count('partner__order_line')))
File "/home/markus/src/django/django/db/models/query.py", line 802, in
annotate
is_summary=False)
File "/home/markus/src/django/django/db/models/sql/query.py", line 1012,
in add_aggregate
field_list, opts, self.get_initial_alias())
File "/home/markus/src/django/django/db/models/sql/query.py", line 1419,
in setup_joins
names, opts, allow_many, fail_on_missing=True)
File "/home/markus/src/django/django/db/models/sql/query.py", line 1383,
in names_to_path
self.raise_field_error(opts, name)
File "/home/markus/src/django/django/db/models/sql/query.py", line 1389,
in raise_field_error
"Choices are: %s" % (name, ", ".join(available)))
FieldError: Cannot resolve keyword u'order_line' into field. Choices are:
<irrelevant>
Traceback (most recent call last):
File "/usr/lib/python2.7/wsgiref/handlers.py", line 85, in run
self.result = application(self.environ, self.start_response)
File "/home/markus/src/django/django/contrib/staticfiles/handlers.py",
line 64, in __call__
return self.application(environ, start_response)
File "/home/markus/src/django/django/core/handlers/wsgi.py", line 187,
in __call__
response = self.get_response(request)
File "/home/markus/src/django/django/core/handlers/base.py", line 199,
in get_response
response = self.handle_uncaught_exception(request, resolver,
sys.exc_info())
File "/home/markus/src/django/django/core/handlers/base.py", line 236,
in handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
File "/home/markus/src/django/django/views/debug.py", line 91, in
technical_500_response
html = reporter.get_traceback_html()
File "/home/markus/src/django/django/views/debug.py", line 350, in
get_traceback_html
return t.render(c)
File "/home/markus/src/django/django/template/base.py", line 148, in
render
return self._render(context)
File "/home/markus/src/django/django/test/utils.py", line 88, in
instrumented_test_render
return self.nodelist.render(context)
File "/home/markus/src/django/django/template/base.py", line 844, in
render
bit = self.render_node(node, context)
File "/home/markus/src/django/django/template/debug.py", line 80, in
render_node
return node.render(context)
File "/home/markus/src/django/django/template/debug.py", line 90, in
render
output = self.filter_expression.resolve(context)
File "/home/markus/src/django/django/template/base.py", line 624, in
resolve
new_obj = func(obj, *arg_vals)
File "/home/markus/src/django/django/template/defaultfilters.py", line
769, in date
return format(value, arg)
File "/home/markus/src/django/django/utils/dateformat.py", line 343, in
format
return df.format(format_string)
File "/home/markus/src/django/django/utils/dateformat.py", line 35, in
format
pieces.append(force_text(getattr(self, piece)()))
File "/home/markus/src/django/django/utils/dateformat.py", line 268, in
r
return self.format('D, j M Y H:i:s O')
File "/home/markus/src/django/django/utils/dateformat.py", line 35, in
format
pieces.append(force_text(getattr(self, piece)()))
File "/home/markus/src/django/django/utils/dateformat.py", line 136, in
O
seconds = self.Z()
File "/home/markus/src/django/django/utils/dateformat.py", line 189, in
Z
offset = self.timezone.utcoffset(self.data)
File "/home/markus/.virtualenvs/machtfit/local/lib/python2.7/site-
packages/pytz/tzinfo.py", line 406, in utcoffset
dt = self.localize(dt, is_dst)
File "/home/markus/.virtualenvs/machtfit/local/lib/python2.7/site-
packages/pytz/tzinfo.py", line 349, in localize
raise AmbiguousTimeError(dt)
AmbiguousTimeError: 2014-10-26 02:40:14.190834
}}}
--
--
Ticket URL: <https://code.djangoproject.com/ticket/23714#comment:1>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/067.43e8f7cbaf8d305fe3ffddac82d8c596%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.