annotate roundup/cgi/timestamp.py @ 7836:219fc5804345

issue2551270 - Better templating support for JavaScript Add (templating) utils.readfile(file, optional=False) and utils.expandfile(file, token_dict=None, optional=False). Allows reading an external file (e.g. JavaScript) and inserting it using tal:contents or equivalent jinja function. expandfile allows setting a dictionary and tokens in the file of the form "%(token_name)s" will be replaced in the file with the values from the dict. See method doc blocks or reference.txt for more info. Also reordered table in references.txt to be case sensitive alphabetic. Added a paragraph on using python's help() to get method/function/... documention blocks. in templating.py _find method. Added explicit return None calls to all code paths. Also added internationalization method to the TemplatingUtils class. Fixed use of 'property' hiding python builtin of same name. Added tests for new TemplatingUtils framework to use for testing existing utils.
author John Rouillard <rouilj@ieee.org>
date Tue, 26 Mar 2024 14:15:46 -0400
parents 216662fbaaee
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5975
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
1 '''Set of functions of adding/checking timestamp to be used to limit
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
2 form submission for cgi actions.
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
3 '''
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
4
7228
07ce4e4110f5 flake8 fixes: whitespace, remove unused imports
John Rouillard <rouilj@ieee.org>
parents: 6045
diff changeset
5 import base64
07ce4e4110f5 flake8 fixes: whitespace, remove unused imports
John Rouillard <rouilj@ieee.org>
parents: 6045
diff changeset
6 import binascii
07ce4e4110f5 flake8 fixes: whitespace, remove unused imports
John Rouillard <rouilj@ieee.org>
parents: 6045
diff changeset
7 import struct
07ce4e4110f5 flake8 fixes: whitespace, remove unused imports
John Rouillard <rouilj@ieee.org>
parents: 6045
diff changeset
8 import time
07ce4e4110f5 flake8 fixes: whitespace, remove unused imports
John Rouillard <rouilj@ieee.org>
parents: 6045
diff changeset
9
5975
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
10 from roundup.cgi.exceptions import FormError
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
11 from roundup.i18n import _
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
12 from roundup.anypy.strings import b2s, s2b
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
13
6045
5ec3171580a6 flake whitespace changes.
John Rouillard <rouilj@ieee.org>
parents: 5975
diff changeset
14
5975
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
15 def pack_timestamp():
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
16 return b2s(base64.b64encode(struct.pack("i", int(time.time()))).strip())
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
17
6045
5ec3171580a6 flake whitespace changes.
John Rouillard <rouilj@ieee.org>
parents: 5975
diff changeset
18
5975
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
19 def unpack_timestamp(s):
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
20 try:
6045
5ec3171580a6 flake whitespace changes.
John Rouillard <rouilj@ieee.org>
parents: 5975
diff changeset
21 timestamp = struct.unpack("i", base64.b64decode(s2b(s)))[0]
5ec3171580a6 flake whitespace changes.
John Rouillard <rouilj@ieee.org>
parents: 5975
diff changeset
22 except (struct.error, binascii.Error, TypeError):
5975
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
23 raise FormError(_("Form is corrupted."))
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
24 return timestamp
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
25
6045
5ec3171580a6 flake whitespace changes.
John Rouillard <rouilj@ieee.org>
parents: 5975
diff changeset
26
5975
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
27 class Timestamped:
6045
5ec3171580a6 flake whitespace changes.
John Rouillard <rouilj@ieee.org>
parents: 5975
diff changeset
28 def timecheck(self, field, delay):
5975
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
29 try:
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
30 created = unpack_timestamp(self.form[field].value)
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
31 except KeyError:
7750
216662fbaaee fix(i18n): fix incorrect lookup of some translations
John Rouillard <rouilj@ieee.org>
parents: 7228
diff changeset
32 raise FormError(_("Form is corrupted, missing: %s.") % field)
5975
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
33 if time.time() - created < delay:
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
34 raise FormError(_("Responding to form too quickly."))
59842a3e8108 issue2550919 - Anti-bot signup using 4 second delay
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
35 return True

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