from urlparse import urlparse, urlunparse import os from xpy import html, xml class URL: attrs='scm','netloc','path','params','query','fragment' # XXX authentication part is not parsed def __init__(self, string): for name,value in zip(self.attrs, urlparse(string, 'http')): setattr(self, name, value) def __str__(self): return urlunparse(tuple(map(self.__dict__.get, self.attrs))) def fullpath(self): return urlunparse( ("","",self.path,self.params,self.query,self.fragment)) class Info: def __init__(self): self.server_name = os.getenv('SERVER_NAME', 'test') self.url = URL(self.server_name+'/'+os.getenv('REQUEST_URI', 'test')) self.projectname = p = 'rlcompleter2' # url.path.split('/')[1] self.index_url = '/%s/index.cgi' % p self.downloadfn = 'rlcompleter2-0.96.tar.gz' self.downloadurl = '/%s/download/%s' % (p, self.downloadfn) # ===================================================================== # Views # ===================================================================== def css(): : xml.append('@import url(style.css);') menu = [ ('home', '?home'), ('install', '?install'), ('issues' , '/issues/rlcompleter2/'), # ('mailman', '/mailman/listinfo/rlcompleter2-dev'), ] def make_header_row(currentname): : : : : : xml.append(" " + currentname) for name, path in menu: if currentname==name: else: if path[:1]!='/': path = info.index_url+path xml.append(" ") def read_doc(name): try: base = os.path.dirname(__file__) except NameError: base = os.path.dirname(os.path.abspath(sys.argv[0])) fn = os.path.join(base, name+'.html') if not os.path.exists(fn): return "file not exists %s" % fn f = open(fn, 'rb') s = f.read() f.close() return s % info.__dict__ global info info = Info() def main(): global tag # for interactive debugging print "Content-Type: text/html" print name = info.url.query or 'home' tag = xml.Frag() : : : css() : : make_header_row(name) : print unicode(tag).encode('utf8') if __name__=='__main__': import sys cmd, name = sys.argv[1:3] if cmd == 'header_row': t = make_header_row(name) print unicode(t).encode('latin1') else: raise ValueError, "unknown command %s" % cmd