Use form_cache.from_request
This commit is contained in:
parent
2f04571767
commit
7d78ba4d65
@ -91,20 +91,15 @@ class FinancialVerificationBase(object):
|
|||||||
raise FormValidationError(form)
|
raise FormValidationError(form)
|
||||||
|
|
||||||
|
|
||||||
def existing_form_data():
|
|
||||||
key = http_request.args.get("formCache")
|
|
||||||
if key:
|
|
||||||
return app.form_cache.read(key)
|
|
||||||
|
|
||||||
|
|
||||||
class GetFinancialVerificationForm(FinancialVerificationBase):
|
class GetFinancialVerificationForm(FinancialVerificationBase):
|
||||||
def __init__(self, user, request, is_extended=False):
|
def __init__(self, user, request, cached_data=None, is_extended=False):
|
||||||
self.user = user
|
self.user = user
|
||||||
self.request = request
|
self.request = request
|
||||||
|
self.cached_data = cached_data or {}
|
||||||
self.is_extended = is_extended
|
self.is_extended = is_extended
|
||||||
|
|
||||||
def execute(self):
|
def execute(self):
|
||||||
form = self._get_form(self.request, self.is_extended, formdata=existing_form_data())
|
form = self._get_form(self.request, self.is_extended, formdata=self.cached_data)
|
||||||
form.reset()
|
form.reset()
|
||||||
return form
|
return form
|
||||||
|
|
||||||
@ -199,7 +194,10 @@ def financial_verification(request_id):
|
|||||||
)
|
)
|
||||||
|
|
||||||
form = GetFinancialVerificationForm(
|
form = GetFinancialVerificationForm(
|
||||||
g.current_user, request, is_extended=is_extended
|
g.current_user,
|
||||||
|
request,
|
||||||
|
is_extended=is_extended,
|
||||||
|
cached_data=app.form_cache.from_request(http_request),
|
||||||
).execute()
|
).execute()
|
||||||
|
|
||||||
return render_template(
|
return render_template(
|
||||||
|
@ -1,4 +1,11 @@
|
|||||||
from flask import g, redirect, render_template, url_for, request as http_request, current_app
|
from flask import (
|
||||||
|
g,
|
||||||
|
redirect,
|
||||||
|
render_template,
|
||||||
|
url_for,
|
||||||
|
request as http_request,
|
||||||
|
current_app,
|
||||||
|
)
|
||||||
|
|
||||||
from . import requests_bp
|
from . import requests_bp
|
||||||
from atst.domain.requests import Requests
|
from atst.domain.requests import Requests
|
||||||
@ -30,7 +37,9 @@ def option_data():
|
|||||||
@requests_bp.route("/requests/new/<int:screen>", methods=["GET"])
|
@requests_bp.route("/requests/new/<int:screen>", methods=["GET"])
|
||||||
def requests_form_new(screen):
|
def requests_form_new(screen):
|
||||||
cached_data = current_app.form_cache.from_request(http_request)
|
cached_data = current_app.form_cache.from_request(http_request)
|
||||||
jedi_flow = JEDIRequestFlow(screen, request=None, current_user=g.current_user, post_data=cached_data)
|
jedi_flow = JEDIRequestFlow(
|
||||||
|
screen, request=None, current_user=g.current_user, post_data=cached_data
|
||||||
|
)
|
||||||
|
|
||||||
return render_template(
|
return render_template(
|
||||||
"requests/screen-%d.html" % int(screen),
|
"requests/screen-%d.html" % int(screen),
|
||||||
|
@ -7,7 +7,6 @@ DEFAULT_CACHE_NAME = "formcache"
|
|||||||
|
|
||||||
|
|
||||||
class FormCache(object):
|
class FormCache(object):
|
||||||
|
|
||||||
def __init__(self, redis):
|
def __init__(self, redis):
|
||||||
self.redis = redis
|
self.redis = redis
|
||||||
|
|
||||||
@ -19,7 +18,9 @@ class FormCache(object):
|
|||||||
def write(self, formdata, expiry_seconds=3600, key_prefix=DEFAULT_CACHE_NAME):
|
def write(self, formdata, expiry_seconds=3600, key_prefix=DEFAULT_CACHE_NAME):
|
||||||
value = pickle.dumps(formdata)
|
value = pickle.dumps(formdata)
|
||||||
hash_ = hashlib.sha1(os.urandom(64)).hexdigest()
|
hash_ = hashlib.sha1(os.urandom(64)).hexdigest()
|
||||||
self.redis.setex(name=self._key(key_prefix, hash_), value=value, time=expiry_seconds)
|
self.redis.setex(
|
||||||
|
name=self._key(key_prefix, hash_), value=value, time=expiry_seconds
|
||||||
|
)
|
||||||
return hash_
|
return hash_
|
||||||
|
|
||||||
def read(self, formdata_key, key_prefix=DEFAULT_CACHE_NAME):
|
def read(self, formdata_key, key_prefix=DEFAULT_CACHE_NAME):
|
||||||
|
@ -8,6 +8,7 @@ from atst.utils.form_cache import DEFAULT_CACHE_NAME, FormCache
|
|||||||
def form_cache(app):
|
def form_cache(app):
|
||||||
return FormCache(app.redis)
|
return FormCache(app.redis)
|
||||||
|
|
||||||
|
|
||||||
def test_cache_form_data(app, form_cache):
|
def test_cache_form_data(app, form_cache):
|
||||||
data = ImmutableDict({"kessel_run": "12 parsecs"})
|
data = ImmutableDict({"kessel_run": "12 parsecs"})
|
||||||
key = form_cache.write(data)
|
key = form_cache.write(data)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user