Mercurial > p > roundup > code
view website/issues/extensions/timestamp.py @ 5282:b051559eaae8
Apply upgrading.txt "Improve query editing" upgrade 1.5.1 to 1.6.0.
Allows user to continue edit search query if there is an error in
query. Otherwise search is lost if it is invalid (e.g. duplicate
search name).
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sun, 24 Sep 2017 19:01:56 -0400 |
| 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)
