Merge branch 'master' into python3
authorFredrik Tolf <fredrik@dolda2000.com>
Sun, 5 Aug 2012 05:44:44 +0000 (07:44 +0200)
committerFredrik Tolf <fredrik@dolda2000.com>
Sun, 5 Aug 2012 05:44:44 +0000 (07:44 +0200)
Conflicts:
wrw/cookie.py

1  2 
wrw/cookie.py
wrw/req.py
wrw/session.py

diff --combined wrw/cookie.py
@@@ -1,4 -1,5 +1,5 @@@
- import http.cookies
 -import Cookie, time
 -import proto
++import http.cookies, time
++from . import proto
  
  __all__ = ["cookies", "get", "add"]
  
@@@ -10,10 -11,10 +11,10 @@@ def addcookies(req)
  class cookiedict(object):
      def __init__(self, req):
          try:
 -            self.bk = Cookie.SimpleCookie(req.ihead.get("Cookie"))
 -        except Cookie.CookieError:
 -            self.bk = Cookie.SimpleCookie()
 -        self.codec = Cookie.SimpleCookie()
 +            self.bk = http.cookies.SimpleCookie(req.ihead.get("Cookie"))
 +        except http.cookies.CookieError:
 +            self.bk = http.cookies.SimpleCookie()
 +        self.codec = http.cookies.SimpleCookie()
          req.oncommit(addcookies)
  
      def __getitem__(self, name):
@@@ -29,7 -30,7 +30,7 @@@
  
      def add(self, name, value, **kw):
          self.codec[name] = value
 -        for key, value in kw.iteritems():
 +        for key, value in kw.items():
              self.codec[name][key] = value
  
      def __setitem__(self, name, value):
@@@ -43,3 -44,5 +44,5 @@@ def get(req, name, default = None)
  
  def add(req, name, value, **kw):
      cookies(req).add(name, value, **kw)
+ cdate = proto.httpdate
diff --combined wrw/req.py
@@@ -17,7 -17,7 +17,7 @@@ class headdict(object)
          del self.dict[key.lower()]
  
      def __iter__(self):
 -        return iter((list[0] for list in self.dict.itervalues()))
 +        return iter((list[0] for list in self.dict.values()))
      
      def get(self, key, default = ""):
          if key.lower() in self.dict:
@@@ -70,6 -70,7 +70,7 @@@ class origrequest(request)
          self.query = env["QUERY_STRING"]
          self.remoteaddr = env["REMOTE_ADDR"]
          self.serverport = env["SERVER_PORT"]
+         self.servername = env["SERVER_NAME"]
          self.https = "HTTPS" in env
          self.ihead = headdict()
          self.ohead = headdict()
diff --combined wrw/session.py
@@@ -1,5 -1,5 +1,5 @@@
  import threading, time, pickle, random, os
 -import cookie, env
 +from . import cookie, env
  
  __all__ = ["db", "get"]
  
@@@ -11,7 -11,7 +11,7 @@@ def hexencode(str)
  
  def gennonce(length):
      nonce = ""
 -    for i in xrange(length):
 +    for i in range(length):
          nonce += chr(random.randint(0, 255))
      return nonce
  
@@@ -86,7 -86,7 +86,7 @@@ class db(object)
      def clean(self):
          now = int(time.time())
          with self.lock:
 -            clist = self.live.keys()
 +            clist = list(self.live.keys())
          for sessid in clist:
              with self.lock:
                  try:
          return session(threading.RLock())
  
      def mkcookie(self, req, sess):
-         cookie.add(req, self.cookiename, sess.id, path=self.path)
+         cookie.add(req, self.cookiename, sess.id,
+                    path=self.path,
+                    expires=cookie.cdate(time.time() + sess.expire))
  
      def fetch(self, req):
          now = int(time.time())
          data = self.backdb[sessid]
          try:
              return pickle.loads(data)
 -        except Exception, e:
 +        except:
              raise KeyError()
  
      def freeze(self, sess):