def fileFor(req, uri): config = req.get_configuration() urldata = urlparse.urlsplit(uri) # Reconstruct uri to something sane uri = "%s://%s%s" % (urldata[0], urldata[1], urldata[2]) fragment = urldata[4] # We get our path here path = uri.replace(config['base_url'], '') req.add_http({'PATH_INFO': path, "form": {}}) blosxom_process_path_info({'request': req}) args = {'request': req} es = blosxom_file_list_handler(args) # We're almost there if len(es) == 1 and path.find(es[0]['file_path']) >= 0: return es[0] # Could be a fragment link for i in es: if i['fn'] == fragment: return i # Point of no return if len(es) >= 1: raise Fault(0x0021, "%s cannot be used as a target" % uri) else: raise Fault(0x0020, "%s does not exist")
def _basic_test(self, pathinfo, expected, cfg=None, http=None, data=None): _http = {"PATH_INFO": pathinfo} if http: _http.update(http) req = self.build_request(cfg=cfg, http=_http, data=data) blosxom_process_path_info(args={"request": req}) # print repr(expected), repr(req.data) self.cmpdict(expected, req.data)