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>')