def get_ticket(payload=None, prevent_resubmit=False): if not payload: payload = '' else: assert isinstance(payload, str) payload = compress(payload) now = int(time()) // 60 now_str = '%x' % now rnd = os.urandom(8) hashobject = get_hashobject(now) hashobject.update(rnd) hashobject.update(payload) hashobject.update(dumps(local.user)) if prevent_resubmit: hashobject.update('+') hash = hashobject.digest() payload_str = b64encode(payload) rnd_str = b64encode(rnd) hash_str = b64encode(hash) return ':'.join((now_str, payload_str, rnd_str, hash_str))
def dumps(obj): type = options.COOKIE_SERIALIZATION_TYPE if type == 'json': return compress(json.dumps(obj, separators=(',', ':'))) elif type == 'pickle': return compress(cPickle.dumps(obj, 2)) else: raise TypeError("Incorrect value of pony.options.COOKIE_SERIALIZATION_TYPE (must be 'json' or 'pickle')")