I am trying to find a way to prevent users from double-submitting my forms. I have javascript that disables the submit button, but there is still an occasional user who finds a way to double-submit.
I have a vision of a re-usable library that I could create to protect from this.
In my ideal library, the code block would look something like this:
try:
with acquire_lock({'field1':'abc', 'field2':'def'}) as lock:
response = #do some credit card processing
lock.response = response
except SubmissionWasDuplicate, e:
response = e.response
The lock table would look something like this:
duplicate_submission_locks
- submission_hash # a MD5 of the submitted arguments
- response # pickled data
- created_at # used for sweeping this table
- lock_expired # boolean signifying if the lock has expired
Does anyone know if this already exists? It doesn't seem to difficult to write, so if it doesn't exist I may write it myself.