summaryrefslogtreecommitdiff
path: root/src/meetingtools/urlmiddleware.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/meetingtools/urlmiddleware.py')
-rw-r--r--src/meetingtools/urlmiddleware.py126
1 files changed, 0 insertions, 126 deletions
diff --git a/src/meetingtools/urlmiddleware.py b/src/meetingtools/urlmiddleware.py
deleted file mode 100644
index 3d77caa..0000000
--- a/src/meetingtools/urlmiddleware.py
+++ /dev/null
@@ -1,126 +0,0 @@
-"""
-URL Middleware
-Stefano J. Attardi (attardi.org)
-
-$Id$
-$URL$
-
-Cleans up urls by adding/removing trailing slashes, adding/removing
-the www. prefix, and allowing the language to be set from the url.
-
-If APPEND_SLASH is set to False, trailing slashes are removed from the
-urls, except for urls which have an explicit trailing slash in
-urls.py, in which case a trailing slash is added.
-
-If REMOVE_WWW is set to True, the www. prefix is removed.
-
-Finally, ?lang=xx can be appended to any url to override the default
-language setting. This override is remembered for the following
-requests. For example, /article?lang=it would show the article in
-Italian regardless of brower settings or cookies, and any following
-request to the site would be shown in Italian by default.
-
-Changelog
-
-1.3.2
-Fixed an indentation issue. Added a check for those backends
-which set an empty path (e.g. runfcgi).
-
-1.3.1
-Added support for running in a test
-suite (doesn't assume that HTTP_HOST is set)
-
-1.3
-Only use sessions for the language preference if the session
-cookie has already been set (regardless of whether session middleware
-is active). Otherwise use the plain django_language cookie.
-Only import the FlatPages module if it is active.
-
-1.2
-Added support for FlatPages.
-Switched to Django's resolve function (with workaround for when it
-returns None).
-
-1.1
-Various bugfixes.
-
-1.0
-First release.
-"""
-__version__ = "1.3.2"
-__license__ = "Python"
-__copyright__ = "Copyright (C) 2006-2007, Stefano J. Attardi"
-__author__ = "Stefano J. Attardi <http://attardi.org/>"
-__contributors__ = ["Antonio Cavedoni <http://cavedoni.com/>"]
-
-from django.conf import settings
-from django.http import HttpResponseRedirect, Http404
-from django.core.urlresolvers import resolve
-from django.utils.translation import check_for_language
-import os
-
-class UrlMiddleware:
-
- def process_request(self, request):
-
- # Change the language setting for the current page
- if "lang" in request.GET and check_for_language(request.GET["lang"]):
- if hasattr(request, "session"):
- request.session["django_language"] = request.GET["lang"]
- else:
- request.COOKIES["django_language"] = request.GET["lang"]
-
- # work-around for runfcgi
- if request.path == "": request.path = "/"
- request.path = '/'+request.path.lstrip('/')
-
- # Check for a redirect based on settings.APPEND_SLASH and settings.PREPEND_WWW
- old_url = [request.META.get("HTTP_HOST", "localhost"), request.path]
- new_url = old_url[:]
-
- # if REMOVE_WWW is True, remove the www. from the urls if necessary
- if hasattr(settings, "REMOVE_WWW") and settings.REMOVE_WWW and old_url[0].startswith("www."):
- new_url[0] = old_url[0][4:]
-
- if hasattr(settings, "APPEND_SLASH") and not settings.APPEND_SLASH:
- # if the url is not found, try with(out) the trailing slash
- if old_url[1] != "/" and not self._urlExists(old_url[1]):
-
- if old_url[1][-1] == "/":
- other = old_url[1][:-1]
- else:
- other = old_url[1] + "/"
-
- if self._urlExists(other):
- new_url[1] = other
-
- if new_url != old_url:
- # Redirect
- newurl = "%s://%s%s" % (os.environ.get("HTTPS") == "on" and "https" or "http", new_url[0], new_url[1])
- if request.GET:
- newurl += "?" + request.GET.urlencode()
-
- return HttpResponseRedirect(newurl)
-
- return None
-
- def process_response(self, request, response):
-
- # Change the language setting for future pages
- if "lang" in request.GET and check_for_language(request.GET["lang"]):
- if "sessionid" in request.COOKIES:
- request.session["django_language"] = request.GET["lang"]
- else:
- response.set_cookie("django_language", request.GET["lang"])
-
- return response
-
- def _urlExists(self, path):
- try:
- if resolve(path) is None: raise Http404 # None?!? You mean 404...
- return True
- except Http404:
- # check for flatpages
- if "django.contrib.flatpages.middleware.FlatpageFallbackMiddleware" in settings.MIDDLEWARE_CLASSES:
- from django.contrib.flatpages.models import FlatPage
- return FlatPage.objects.filter(url=path, sites__id=settings.SITE_ID).count() == 1