X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=wrw%2Fsession.py;h=284d09287437fec7b705687a5b28f7fc887285fa;hb=dfad24d0685c09c19dc0aaa2f11adf39d57a363b;hp=1fded4a945c9a808ac8596853dc9dbdeb95f6e52;hpb=188da534e89448f61f9ef1b0d92c0c7f5614b040;p=wrw.git diff --git a/wrw/session.py b/wrw/session.py index 1fded4a..284d092 100644 --- a/wrw/session.py +++ b/wrw/session.py @@ -129,18 +129,17 @@ class db(object): except KeyError: sess = session() self.live[sess.id] = sess - req.oncommit(self.addcookie) + sess.new = True req.oncommit(self.ckfreeze) return sess - def addcookie(self, req): - sess = req.item(self.fetch) - cookie.add(req, self.cookiename, sess.id, self.path) - def ckfreeze(self, req): - sess = req.item(self.fetch) + sess = self.get(req) if sess.dirty(): try: + if getattr(sess, "new", False): + cookie.add(req, self.cookiename, sess.id, self.path) + del sess.new self.freeze(sess) except: pass @@ -151,6 +150,9 @@ class db(object): def freeze(self, sess): raise TypeError() + def get(self, req): + return req.item(self.fetch) + class backeddb(db): def __init__(self, backdb, *args, **kw): super(backeddb, self).__init__(*args, **kw) @@ -187,4 +189,4 @@ class dirback(object): default = backeddb(dirback(os.path.join("/tmp", "wrwsess-" + str(os.getuid())))) def get(req): - return req.item(default.fetch) + return default.get(req)