Mercurial > hg > FileServer
comparison fileserver/web.py @ 24:eb15c8321ad8
sort by default
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Fri, 02 Mar 2012 12:50:23 -0800 |
parents | 1eb5e82605a5 |
children | 395c6744bcd9 |
comparison
equal
deleted
inserted
replaced
23:ac592b097688 | 24:eb15c8321ad8 |
---|---|
39 res = file_response(self.filename) | 39 res = file_response(self.filename) |
40 return res(environ, start_response) | 40 return res(environ, start_response) |
41 | 41 |
42 class DirectoryServer(object): | 42 class DirectoryServer(object): |
43 | 43 |
44 def __init__(self, directory): | 44 def __init__(self, directory, sort=True): |
45 assert os.path.exists(directory), "'%s' does not exist" % directory | 45 assert os.path.exists(directory), "'%s' does not exist" % directory |
46 assert os.path.isdir(directory), "'%s' is not a directory" % directory | 46 assert os.path.isdir(directory), "'%s' is not a directory" % directory |
47 self.directory = self.normpath(directory) | 47 self.directory = self.normpath(directory) |
48 self.sort = sort | |
48 | 49 |
49 @staticmethod | 50 @staticmethod |
50 def normpath(path): | 51 def normpath(path): |
51 return os.path.normcase(os.path.abspath(path)) | 52 return os.path.normcase(os.path.abspath(path)) |
52 | 53 |
63 """ | 64 """ |
64 generate a directory listing for a given directory | 65 generate a directory listing for a given directory |
65 """ | 66 """ |
66 parts = ['<html><head><title>Simple Index</title></head><body>'] | 67 parts = ['<html><head><title>Simple Index</title></head><body>'] |
67 listings = os.listdir(directory) | 68 listings = os.listdir(directory) |
69 if self.sort: | |
70 listings.sort() | |
68 listings = [(os.path.isdir(os.path.join(directory, entry)) and entry + '/' or entry, entry) | 71 listings = [(os.path.isdir(os.path.join(directory, entry)) and entry + '/' or entry, entry) |
69 for entry in listings] | 72 for entry in listings] |
70 for link, entry in listings: | 73 for link, entry in listings: |
71 parts.append('<a href="%s">%s</a><br/>' % (link, entry)) | 74 parts.append('<a href="%s">%s</a><br/>' % (link, entry)) |
72 parts.append('</body></html>') | 75 parts.append('</body></html>') |