Mercurial > p > roundup > code
view website/issues/extensions/timestamp.py @ 5725:6923225fd781
Handle UnicodeDecodeError in file class when file contents are not
text (e.g. jpg). This shows up in python3 due to conversion from bytes
to string. This allows binary file retrieval via the rest interface to
complete.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Wed, 22 May 2019 20:56:59 -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)
