Пример #1
0
 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('/')
Пример #2
0
 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