equal
deleted
inserted
replaced
69 if os.path.exists(os.path.join(cl_path)): |
69 if os.path.exists(os.path.join(cl_path)): |
70 return os.stat(cl_path).st_mtime |
70 return os.stat(cl_path).st_mtime |
71 else: |
71 else: |
72 return os.stat(hg_path).st_mtime |
72 return os.stat(hg_path).st_mtime |
73 |
73 |
74 class hgrequest: |
74 class hgrequest(object): |
75 def __init__(self, inp=None, out=None, env=None): |
75 def __init__(self, inp=None, out=None, env=None): |
76 self.inp = inp or sys.stdin |
76 self.inp = inp or sys.stdin |
77 self.out = out or sys.stdout |
77 self.out = out or sys.stdout |
78 self.env = env or os.environ |
78 self.env = env or os.environ |
79 self.form = cgi.parse(self.inp, self.env, keep_blank_values=1) |
79 self.form = cgi.parse(self.inp, self.env, keep_blank_values=1) |
102 headers.append(('Content-disposition', 'attachment; filename=%s' % file)) |
102 headers.append(('Content-disposition', 'attachment; filename=%s' % file)) |
103 if size > 0: |
103 if size > 0: |
104 headers.append(('Content-length', str(size))) |
104 headers.append(('Content-length', str(size))) |
105 self.header(headers) |
105 self.header(headers) |
106 |
106 |
107 class templater: |
107 class templater(object): |
108 def __init__(self, mapfile, filters={}, defaults={}): |
108 def __init__(self, mapfile, filters={}, defaults={}): |
109 self.cache = {} |
109 self.cache = {} |
110 self.map = {} |
110 self.map = {} |
111 self.base = os.path.dirname(mapfile) |
111 self.base = os.path.dirname(mapfile) |
112 self.filters = filters |
112 self.filters = filters |
173 "firstline": (lambda x: x.splitlines(1)[0]), |
173 "firstline": (lambda x: x.splitlines(1)[0]), |
174 "permissions": (lambda x: x and "-rwxr-xr-x" or "-rw-r--r--"), |
174 "permissions": (lambda x: x and "-rwxr-xr-x" or "-rw-r--r--"), |
175 "rfc822date": lambda x: util.datestr(x, "%a, %d %b %Y %H:%M:%S"), |
175 "rfc822date": lambda x: util.datestr(x, "%a, %d %b %Y %H:%M:%S"), |
176 } |
176 } |
177 |
177 |
178 class hgweb: |
178 class hgweb(object): |
179 def __init__(self, repo, name=None): |
179 def __init__(self, repo, name=None): |
180 if type(repo) == type(""): |
180 if type(repo) == type(""): |
181 self.repo = hg.repository(ui.ui(), repo) |
181 self.repo = hg.repository(ui.ui(), repo) |
182 else: |
182 else: |
183 self.repo = repo |
183 self.repo = repo |
950 return IPv6HTTPServer((address, port), hgwebhandler) |
950 return IPv6HTTPServer((address, port), hgwebhandler) |
951 else: |
951 else: |
952 return BaseHTTPServer.HTTPServer((address, port), hgwebhandler) |
952 return BaseHTTPServer.HTTPServer((address, port), hgwebhandler) |
953 |
953 |
954 # This is a stopgap |
954 # This is a stopgap |
955 class hgwebdir: |
955 class hgwebdir(object): |
956 def __init__(self, config): |
956 def __init__(self, config): |
957 def cleannames(items): |
957 def cleannames(items): |
958 return [(name.strip('/'), path) for name, path in items] |
958 return [(name.strip('/'), path) for name, path in items] |
959 |
959 |
960 if type(config) == type([]): |
960 if type(config) == type([]): |