示例#1
0
文件: response.py 项目: geertj/draco2
 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
示例#2
0
 def test_roundtrip(self):
     for i in range(100):
         sess = util.generate_sessionid()
         dump = util.dump_sessionid(sess)
         assert util.issessionid(dump)
         parsed = util.parse_sessionid(dump)
         assert sess == parsed
     for i in range(100):
         sess = util.generate_sessionid()
         sess = (sess[0], None)
         dump = util.dump_sessionid(sess)
         assert util.issessionid(dump)
         parsed = util.parse_sessionid(dump)
         assert sess == parsed
     for i in range(100):
         sess = util.generate_sessionid()
         sess = (None, sess[1])
         dump = util.dump_sessionid(sess)
         assert util.issessionid(dump)
         parsed = util.parse_sessionid(dump)
         assert sess == parsed
示例#3
0
文件: session.py 项目: geertj/draco2
 def new(self):
     """Create a new session."""
     session = SessionObject()
     sessionid = generate_sessionid()
     session['id'] = sessionid[0]
     session['last_subsession'] = sessionid[1]
     session['principal'] = self.m_security.principal()
     now = datetime.datetime.now()
     session['create_date'] = now
     session['last_used'] = now
     expire_date = now + datetime.timedelta(seconds=self.m_timeout)
     session['expire_date'] = expire_date
     self.m_transaction.insert(session)
     value = dump_sessionid((sessionid[0], None))
     cookie = Cookie('draco-session', value, expires=expire_date, path='/')
     self.m_response.set_cookie(cookie)
     self.m_session = session
     self.m_sessionid = sessionid