Mercurial > p > roundup > code
diff website/issues/extensions/timestamp.py @ 4024:c2d0d3e9099d website
svn repository setup
| author | Stefan Seefeld <stefan@users.sourceforge.net> |
|---|---|
| date | Fri, 06 Feb 2009 13:16:31 +0000 |
| parents | |
| children | 35ea9b1efc14 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/website/issues/extensions/timestamp.py Fri Feb 06 13:16:31 2009 +0000 @@ -0,0 +1,28 @@ +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)
