def _parse_draco_uri(self): """Parse the request URI.""" (protocol, host, directory, filename, locale, session, pathinfo, args) = dracouri.parse_draco_uri(self.uri(), self.docroot()) self.m_locale = locale self.m_session = session self.m_pathinfo = pathinfo.split('/')
def rewrite_uri(self, uri, force_rewrite=False): """Pass on extended Draco URI components.""" if callable(uri): extension = self.m_api.options['extension'] uri = dracouri.uri_from_method(uri, extension) scheme, host, path, query = urimod.parse_uri(uri) if scheme and scheme != 'http': return uri docroot = self.m_request.docroot() extension = self.m_api.options['extension'] servername = self.m_request.servername() parts = dracouri.parse_draco_uri(uri, docroot) if not force_rewrite and (parts[1] and parts[1] != servername) \ or not parts[3].endswith('.' + extension): return uri locale = self.m_request.locale() if hasattr(self.m_api, 'session'): sessionid = self.m_api.session.sessionid() else: sessionid = None if sessionid: sessionid = list(sessionid) # subsession if not default if self.m_rewrite_link_level == 0: sessionid[0] = None if sessionid[1] == 0: sessionid[1] = None # subsession unconditionally elif self.m_rewrite_link_level == 1: sessionid[0] = None session = dump_sessionid(sessionid) else: session = None uri = self.paste_uri(uri, locale=locale, session=session) return uri