# # # patch "viewmtn.py" # from [b21dfade3155090e53a021f01d797d8ea0f0c99c] # to [6f1cebd7c3e402a11f7ed230fea90cc138e06b9e] # ============================================================ --- viewmtn.py b21dfade3155090e53a021f01d797d8ea0f0c99c +++ viewmtn.py 6f1cebd7c3e402a11f7ed230fea90cc138e06b9e @@ -104,72 +104,71 @@ def runfcgi_apache(func): def runfcgi_apache(func): web.wsgi.runfcgi(func, None) +def assemble_urls(): + fvars = {} + urls = () + + factory = RequestContextFactory() + + def per_db_closure (handler): + class PerDBClosure(object): + def GET (self, *args, **kwargs): + db, other_args = args[0], args[1:] + # due to regexp we use, db passed in will always have a trailing slash + if not db is None: + db = db[:-1] + ctxt = factory[db] + if ctxt is None: + return web.notfound() + return handler.GET (ctxt, *other_args, **kwargs) + return PerDBClosure + + def nodefault_closure (handler): + class NoDefaultClosure(object): + def GET (self, *args, **kwargs): + return handler.GET (factory, *args, **kwargs) + return NoDefaultClosure + + def assemble(prefix, url_def, url_fn, the_fn_fn): + urls = () + for url, fn in grouper (2, url_def): + if hasattr(handlers, fn): + the_fn = getattr(handlers, fn) + if url_fn: + url = url_fn(url) + if the_fn_fn: + the_fn = the_fn_fn(the_fn) + mangled = prefix + '_' + fn + urls += (url, mangled) + fvars[mangled] = the_fn + else: + print >>sys.stderr, "*** URL defined for non-existant handler %s: %s'" % (fn, url) + return urls + + urls += assemble('c', + common_urls, + lambda u: r'^/' + u, + None) + if factory.default is None: + urls += assemble('n', + nodefault_urls, + lambda u: r'^/' + u, + lambda f: nodefault_closure(f())) + urls += assemble('d', + perdb_urls, + lambda u: r'^/([A-Za-z]+/)?' + u, + lambda f: per_db_closure(f())) + + # import pprint + # pp = pprint.PrettyPrinter() + # pp.pprint(urls) + return urls, fvars + if __name__ == '__main__': if hasattr(config, "running_under_apache2") and config.running_under_apache2: web.wsgi.runwsgi = runfcgi_apache if hasattr(config, "debug") and config.debug: web.webapi.internalerror = web.debugerror - - def assemble_urls(): - fvars = {} - urls = () - - factory = RequestContextFactory() - - def per_db_closure (handler): - class PerDBClosure(object): - def GET (self, *args, **kwargs): - db, other_args = args[0], args[1:] - # due to regexp we use, db passed in will always have a trailing slash - if not db is None: - db = db[:-1] - ctxt = factory[db] - if ctxt is None: - return web.notfound() - return handler.GET (ctxt, *other_args, **kwargs) - return PerDBClosure - - def nodefault_closure (handler): - class NoDefaultClosure(object): - def GET (self, *args, **kwargs): - return handler.GET (factory, *args, **kwargs) - return NoDefaultClosure - - def assemble(prefix, url_def, url_fn, the_fn_fn): - urls = () - for url, fn in grouper (2, url_def): - if hasattr(handlers, fn): - the_fn = getattr(handlers, fn) - if url_fn: - url = url_fn(url) - if the_fn_fn: - the_fn = the_fn_fn(the_fn) - mangled = prefix + '_' + fn - urls += (url, mangled) - fvars[mangled] = the_fn - else: - print >>sys.stderr, "*** URL defined for non-existant handler %s: %s'" % (fn, url) - return urls - - urls += assemble('c', - common_urls, - lambda u: r'^/' + u, - None) - if factory.default is None: - urls += assemble('n', - nodefault_urls, - lambda u: r'^/' + u, - lambda f: nodefault_closure(f())) - urls += assemble('d', - perdb_urls, - lambda u: r'^/([A-Za-z]+/)?' + u, - lambda f: per_db_closure(f())) - - # import pprint - # pp = pprint.PrettyPrinter() - # pp.pprint(urls) - return urls, fvars - urls, fvars = assemble_urls() web.run(urls, fvars)