From 7d78ba4d65ba926a466e87da8555ddb3dd785583 Mon Sep 17 00:00:00 2001 From: richard-dds Date: Fri, 16 Nov 2018 13:20:55 -0500 Subject: [PATCH] Use form_cache.from_request --- atst/routes/requests/financial_verification.py | 16 +++++++--------- atst/routes/requests/requests_form.py | 13 +++++++++++-- atst/utils/form_cache.py | 5 +++-- tests/utils/test_form_cache.py | 1 + 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/atst/routes/requests/financial_verification.py b/atst/routes/requests/financial_verification.py index 9a04e88f..2f609d31 100644 --- a/atst/routes/requests/financial_verification.py +++ b/atst/routes/requests/financial_verification.py @@ -91,20 +91,15 @@ class FinancialVerificationBase(object): raise FormValidationError(form) -def existing_form_data(): - key = http_request.args.get("formCache") - if key: - return app.form_cache.read(key) - - 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.request = request + self.cached_data = cached_data or {} self.is_extended = is_extended 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() return form @@ -199,7 +194,10 @@ def financial_verification(request_id): ) 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() return render_template( diff --git a/atst/routes/requests/requests_form.py b/atst/routes/requests/requests_form.py index e1bb022c..a2a04e4f 100644 --- a/atst/routes/requests/requests_form.py +++ b/atst/routes/requests/requests_form.py @@ -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 atst.domain.requests import Requests @@ -30,7 +37,9 @@ def option_data(): @requests_bp.route("/requests/new/", methods=["GET"]) def requests_form_new(screen): 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( "requests/screen-%d.html" % int(screen), diff --git a/atst/utils/form_cache.py b/atst/utils/form_cache.py index 1769cee3..7d359227 100644 --- a/atst/utils/form_cache.py +++ b/atst/utils/form_cache.py @@ -7,7 +7,6 @@ DEFAULT_CACHE_NAME = "formcache" class FormCache(object): - def __init__(self, redis): self.redis = redis @@ -19,7 +18,9 @@ class FormCache(object): def write(self, formdata, expiry_seconds=3600, key_prefix=DEFAULT_CACHE_NAME): value = pickle.dumps(formdata) 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_ def read(self, formdata_key, key_prefix=DEFAULT_CACHE_NAME): diff --git a/tests/utils/test_form_cache.py b/tests/utils/test_form_cache.py index f59b9ef5..17998ee7 100644 --- a/tests/utils/test_form_cache.py +++ b/tests/utils/test_form_cache.py @@ -8,6 +8,7 @@ from atst.utils.form_cache import DEFAULT_CACHE_NAME, FormCache def form_cache(app): return FormCache(app.redis) + def test_cache_form_data(app, form_cache): data = ImmutableDict({"kessel_run": "12 parsecs"}) key = form_cache.write(data)