view website/issues/extensions/timestamp.py @ 6459:0e86ea84e59d

Debugging and test fixes for CI test_compression_br worked on my box under python 3.6. In CI it worked in 3.4 but failed on all other versions 3.6,7,8,9,dev. Error: json_dict = json.loads(b2s(brotli.decompress(f.content))) E brotli.error: BrotliDecompress failed so print f.content. Also restructured the code to not check for type of f.content. Instead try json.loads(f.content) and if we get an exception try decompressing. Use this for br and zstd tests.
author John Rouillard <rouilj@ieee.org>
date Sat, 24 Jul 2021 18:23:21 -0400
parents 35ea9b1efc14
children
line wrap: on
line source

import time, struct, base64
from roundup.cgi.actions import RegisterAction
from roundup.cgi.exceptions import *

def timestamp():
    return base64.encodestring(struct.pack("i", time.time())).strip()

def unpack_timestamp(s):
    return struct.unpack("i",base64.decodestring(s))[0]

class Timestamped:
    def check(self):
        try:
            created = unpack_timestamp(self.form['opaque'].value)
        except KeyError:
            raise FormError("somebody tampered with the form")
        if time.time() - created < 4:
            raise FormError("responding to the form too quickly")
        return True

class TimestampedRegister(Timestamped, RegisterAction):
    def permission(self):
        self.check()
        RegisterAction.permission(self)

def init(instance):
    instance.registerUtil('timestamp', timestamp)
    instance.registerAction('register', TimestampedRegister)

Roundup Issue Tracker: http://roundup-tracker.org/