from django.http import HttpResponsePermanentRedirect
from django.template import Library
from django.template.base import Node
import django.templatetags.future
from django.core import urlresolvers
class HttpsUrls(object):
def process_view(self, request, view_func, view_args, view_kwargs):
https_wanted = view_kwargs.pop("https", False)
if request.method == "GET" \
and https_wanted \
and not request.is_secure():
return HttpResponsePermanentRedirect \
("https://%s%s" % (request.get_host(), request.get_full_path()))
class HttpsUrlNode(Node):
def __init__(self, url_node):
self.url_node = url_node
def render(self, context):
url_string = self.url_node.render(context)
match = urlresolvers.resolve(url_string)
if match.kwargs.get("https", False):
url_string = "https://%s%s" % (context["request"].get_host(), url_string)
return url_string
def url(parser, token):
return HttpsUrlNode(django.templatetags.future.url(parser, token))
django.templatetags.future.register.tag(url)
Comments