text: from __future__ import unicode_literals
  
  from urllib.parse import parse_qsl, urlsplit, urlunsplit
  
  import pytz
  from django.http import Http404, HttpResponseRedirect
  from django.shortcuts import redirect
  from django.utils.http import is_safe_url, urlencode
  from django.views.decorators.http import require_POST
  from touchtechnology.common.forms.tz import SelectTimezoneForm
  
  
  def login(request, to, *args, **kwargs):
      scheme, netloc, path, query, fragments = urlsplit(to)
      query = dict(parse_qsl(query))
      query.update(kwargs)
      query = urlencode(query)
      to = urlunsplit((scheme, netloc, path, query, fragments))
      return redirect(to)
  
  
  @require_POST
  def set_timezone(request):
      url = request.META.get("HTTP_REFERER", "/")
      response = HttpResponseRedirect(url)
  
      form = SelectTimezoneForm(data=request.POST)
      if form.is_valid():
          tzname = form.cleaned_data.get("timezone")
          if tzname in pytz.all_timezones_set:
              if hasattr(request, "session"):
                  request.session["django_timezone"] = tzname
              else:
                  response.set_cookie("django_timezone", tzname)
  
      if not is_safe_url(url, {request.get_host()}):
          raise Http404
  
      return response
  