Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Moved django.core.handlers.wsgi.AdminMediaHandler to django.core.serv…

…ers.basehttp. Makes more sense to have it in there, because its only use is for the development server.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@491 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 199aa88ffb35b8d285a1ac2759f6fbfa1a2420e0 1 parent 43f3b98
@adrianholovaty adrianholovaty authored
View
45 django/core/handlers/wsgi.py
@@ -144,48 +144,3 @@ def __call__(self, environ, start_response):
output = [response.get_content_as_string('utf-8')]
start_response(status, response_headers.items())
return output
-
-class AdminMediaHandler:
- """
- WSGI middleware that intercepts calls to the admin media directory, as
- defined by the ADMIN_MEDIA_PREFIX setting, and serves those images.
- Use this ONLY LOCALLY, for development! This hasn't been tested for
- security and is not super efficient.
- """
- def __init__(self, application):
- from django.conf import settings
- import django
- self.application = application
- self.media_dir = django.__path__[0] + '/conf/admin_media'
- self.media_url = settings.ADMIN_MEDIA_PREFIX
-
- def __call__(self, environ, start_response):
- import os.path
-
- # Ignore requests that aren't under ADMIN_MEDIA_PREFIX. Also ignore
- # all requests if ADMIN_MEDIA_PREFIX isn't a relative URL.
- if self.media_url.startswith('http://') or self.media_url.startswith('https://') \
- or not environ['PATH_INFO'].startswith(self.media_url):
- return self.application(environ, start_response)
-
- # Find the admin file and serve it up, if it exists and is readable.
- relative_url = environ['PATH_INFO'][len(self.media_url):]
- file_path = os.path.join(self.media_dir, relative_url)
- if not os.path.exists(file_path):
- status = '404 NOT FOUND'
- headers = {'Content-type': 'text/plain'}
- output = ['Page not found: %s' % file_path]
- else:
- try:
- fp = open(file_path, 'r')
- except IOError:
- status = '401 UNAUTHORIZED'
- headers = {'Content-type': 'text/plain'}
- output = ['Permission denied: %s' % file_path]
- else:
- status = '200 OK'
- headers = {}
- output = [fp.read()]
- fp.close()
- start_response(status, headers.items())
- return output
View
4 django/core/management.py
@@ -485,8 +485,8 @@ def table2model(table_name):
def runserver(port):
"Starts a lightweight Web server for development."
- from django.core.servers.basehttp import run, WSGIServerException
- from django.core.handlers.wsgi import AdminMediaHandler, WSGIHandler
+ from django.core.servers.basehttp import run, AdminMediaHandler, WSGIServerException
+ from django.core.handlers.wsgi import WSGIHandler
if not port.isdigit():
sys.stderr.write("Error: %r is not a valid port number.\n" % port)
sys.exit(1)
View
45 django/core/servers/basehttp.py
@@ -591,6 +591,51 @@ def log_message(self, format, *args):
return
sys.stderr.write("[%s] %s\n" % (self.log_date_time_string(), format % args))
+class AdminMediaHandler:
+ """
+ WSGI middleware that intercepts calls to the admin media directory, as
+ defined by the ADMIN_MEDIA_PREFIX setting, and serves those images.
+ Use this ONLY LOCALLY, for development! This hasn't been tested for
+ security and is not super efficient.
+ """
+ def __init__(self, application):
+ from django.conf import settings
+ import django
+ self.application = application
+ self.media_dir = django.__path__[0] + '/conf/admin_media'
+ self.media_url = settings.ADMIN_MEDIA_PREFIX
+
+ def __call__(self, environ, start_response):
+ import os.path
+
+ # Ignore requests that aren't under ADMIN_MEDIA_PREFIX. Also ignore
+ # all requests if ADMIN_MEDIA_PREFIX isn't a relative URL.
+ if self.media_url.startswith('http://') or self.media_url.startswith('https://') \
+ or not environ['PATH_INFO'].startswith(self.media_url):
+ return self.application(environ, start_response)
+
+ # Find the admin file and serve it up, if it exists and is readable.
+ relative_url = environ['PATH_INFO'][len(self.media_url):]
+ file_path = os.path.join(self.media_dir, relative_url)
+ if not os.path.exists(file_path):
+ status = '404 NOT FOUND'
+ headers = {'Content-type': 'text/plain'}
+ output = ['Page not found: %s' % file_path]
+ else:
+ try:
+ fp = open(file_path, 'r')
+ except IOError:
+ status = '401 UNAUTHORIZED'
+ headers = {'Content-type': 'text/plain'}
+ output = ['Permission denied: %s' % file_path]
+ else:
+ status = '200 OK'
+ headers = {}
+ output = [fp.read()]
+ fp.close()
+ start_response(status, headers.items())
+ return output
+
def run(port, wsgi_handler):
server_address = ('', port)
httpd = WSGIServer(server_address, WSGIRequestHandler)
Please sign in to comment.
Something went wrong with that request. Please try again.