X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=wrw%2Futil.py;h=c8b7b2c0cbf42a16b28007f0ecae11f1095c269f;hb=3414365c207c42f3a2d26edac5b5a1d0bd782d7a;hp=35cd3ae2d75fd2d2524c6f2693fd6e472a70c82d;hpb=ca6fd155fd1cf58241c9d136977c2fd08948b51b;p=wrw.git diff --git a/wrw/util.py b/wrw/util.py index 35cd3ae..c8b7b2c 100644 --- a/wrw/util.py +++ b/wrw/util.py @@ -6,6 +6,15 @@ def wsgiwrap(callable): return dispatch.handle(req.origrequest(env), startreq, callable) return wrapper +def stringwrap(charset): + def dec(callable): + def wrapper(*args, **kwargs): + bk = callable(*args, **kwargs) + for string in bk: + yield string.encode(charset) + return wrapper + return dec + def formparams(callable): def wrapper(req): data = form.formdata(req) @@ -36,19 +45,21 @@ def persession(data = None): class sessiondata(object): @classmethod - def get(cls, req): + def get(cls, req, create = True): sess = cls.sessdb().get(req) with sess.lock: try: return sess[cls] except KeyError: - ret = cls(req) + if not create: + return None + ret = cls(req, sess) sess[cls] = ret return ret @classmethod def sessdb(cls): - return session.default + return session.default.val class autodirty(sessiondata): @classmethod