mercurial/hgweb.py
changeset 1559 59b3639df0a9
parent 1554 68ec7b9e09a4
child 1572 385b8872b8e3
equal deleted inserted replaced
1554:68ec7b9e09a4 1559:59b3639df0a9
    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([]):