#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.

Reply via email to