Browse files

Start of generalising internal redirect based approach

  • Loading branch information...
1 parent a9f4fa0 commit 8342332e13077c6e6993cd8cc1101e99b414e0ef @johnsensible committed Jan 18, 2012
Showing with 30 additions and 0 deletions.
  1. +30 −0 sendfile/backends/_internalredirect.py
View
30 sendfile/backends/_internalredirect.py
@@ -0,0 +1,30 @@
+from django.http import HttpResponse
+
+from django.conf import settings
+import os.path
+
+def _convert_file_to_url(filename):
+ # CURRENTLY NOT WORKING
+ # mod_wsgi wants a relative URL not a filename
+ # so apache does an internal redirect
+
+ relpath = os.path.relpath(filename, settings.SENDFILE_ROOT)
+
+ url = [settings.SENDFILE_URL]
+
+ while relpath:
+ relpath, head = os.path.split(relpath)
+ url.insert(1, head)
+
+ return u''.join(url)
+
+def sendfile(request, filename, **kwargs):
+ response = HttpResponse()
+ response['Location'] = _convert_file_to_url(filename)
+ # need to destroy get_host() to stop django
+ # rewriting our location to include http, so that
+ # mod_wsgi is able to do the internal redirect
+ request.get_host = lambda: ''
+
+ return response
+

0 comments on commit 8342332

Please sign in to comment.