view website/issues/extensions/timestamp.py @ 4632:4f25640b5521

Unified all copies of detectors/userauditor.py The only functional change for the minimal and classic template is that the error message for invalid addresses now contains the address that caused the error. For the devel and website trackers the print command probably used while debugging was removed. Everything else is comment and vim modeline.
author Thomas Arendsen Hein <thomas@intevation.de>
date Fri, 01 Jun 2012 17:25:45 +0200
parents c2d0d3e9099d
children 35ea9b1efc14
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/