﻿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
28911	Add support for the Msft time zone required on Windows Subsystem for Linux running openSUSE	El'endia Starman	nobody	"Under Windows Subsystem for Linux, the only available time zone on openSUSE is `Msft`, which uses settings that are set on the Windows side. This is not a valid time zone in pytz. In the process of reporting an error thrown by a bug in my code, Django tried to normalize the time zone provided in the project settings by passing it through pytz. pytz then complains that the time zone is unknown. Somewhat amusingly, this error is also caught by Django and goes through the same code path, quickly hitting the recursion limit.

See below for a significant part of the stack trace. My temporary solution was to change 

`return pytz.timezone(settings.TIME_ZONE)`

to

`return pytz.timezone(settings.TIME_ZONE if settings.TIME_ZONE in pytz.all_timezones else 'UTC')`

---

{{{
pytz.exceptions.UnknownTimeZoneError: 'Msft'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 41, in inner
    response = get_response(request)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/utils/deprecation.py"", line 140, in __call__
    response = self.get_response(request)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 43, in inner
    response = response_for_exception(request, exc)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 93, in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 139, in handle_uncaught_exception
    return debug.technical_500_response(request, *exc_info)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/views/debug.py"", line 84, in technical_500_response
    html = reporter.get_traceback_html()
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/views/debug.py"", line 328, in get_traceback_html
    return t.render(c)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/template/base.py"", line 207, in render
    return self._render(context)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/template/base.py"", line 199, in _render
    return self.nodelist.render(context)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/template/base.py"", line 990, in render
    bit = node.render_annotated(context)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/template/base.py"", line 957, in render_annotated
    return self.render(context)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/template/base.py"", line 1040, in render
    output = self.filter_expression.resolve(context)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/template/base.py"", line 732, in resolve
    obj = template_localtime(obj, context.use_tz)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/utils/timezone.py"", line 195, in template_localtime
    return localtime(value) if should_convert else value
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/utils/timezone.py"", line 213, in localtime
    timezone = get_current_timezone()
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/utils/timezone.py"", line 97, in get_current_timezone
    return getattr(_active, ""value"", get_default_timezone())
  File ""/home/elendiastarman/.virtualenvs/django/lib64/python3.4/functools.py"", line 472, in wrapper
    result = user_function(*args, **kwds)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/utils/timezone.py"", line 79, in get_default_timezone
    return pytz.timezone(settings.TIME_ZONE)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/pytz/__init__.py"", line 191, in timezone
    raise UnknownTimeZoneError(zone)
pytz.exceptions.UnknownTimeZoneError: 'Msft'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File ""/usr/lib64/python3.4/wsgiref/handlers.py"", line 137, in run
    self.result = application(self.environ, self.start_response)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/contrib/staticfiles/handlers.py"", line 63, in __call__
    return self.application(environ, start_response)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/core/handlers/wsgi.py"", line 157, in __call__
    response = self.get_response(request)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/core/handlers/base.py"", line 124, in get_response
    response = self._middleware_chain(request)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 43, in inner
    response = response_for_exception(request, exc)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 93, in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/core/handlers/exception.py"", line 139, in handle_uncaught_exception
    return debug.technical_500_response(request, *exc_info)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/views/debug.py"", line 84, in technical_500_response
    html = reporter.get_traceback_html()
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/views/debug.py"", line 328, in get_traceback_html
    return t.render(c)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/template/base.py"", line 207, in render
    return self._render(context)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/template/base.py"", line 199, in _render
    return self.nodelist.render(context)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/template/base.py"", line 990, in render
    bit = node.render_annotated(context)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/template/base.py"", line 957, in render_annotated
    return self.render(context)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/template/base.py"", line 1040, in render
    output = self.filter_expression.resolve(context)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/template/base.py"", line 732, in resolve
    obj = template_localtime(obj, context.use_tz)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/utils/timezone.py"", line 195, in template_localtime
    return localtime(value) if should_convert else value
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/utils/timezone.py"", line 213, in localtime
    timezone = get_current_timezone()
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/utils/timezone.py"", line 97, in get_current_timezone
    return getattr(_active, ""value"", get_default_timezone())
  File ""/home/elendiastarman/.virtualenvs/django/lib64/python3.4/functools.py"", line 472, in wrapper
    result = user_function(*args, **kwds)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/django/utils/timezone.py"", line 79, in get_default_timezone
    return pytz.timezone(settings.TIME_ZONE)
  File ""/home/elendiastarman/.virtualenvs/django/lib/python3.4/site-packages/pytz/__init__.py"", line 191, in timezone
    raise UnknownTimeZoneError(zone)
pytz.exceptions.UnknownTimeZoneError: 'Msft'
}}}"	Cleanup/optimization	new	Utilities	1.11	Normal		timezone	Sergey Fedoseev Stephen James	Accepted	0	0	0	0	0	0
