FormCache class
This commit is contained in:
parent
e06a28c918
commit
a475cb3156
@ -24,6 +24,7 @@ from atst.models.permissions import Permissions
|
|||||||
from atst.eda_client import MockEDAClient
|
from atst.eda_client import MockEDAClient
|
||||||
from atst.uploader import Uploader
|
from atst.uploader import Uploader
|
||||||
from atst.utils import mailer
|
from atst.utils import mailer
|
||||||
|
from atst.utils.form_cache import FormCache
|
||||||
from atst.queue import queue
|
from atst.queue import queue
|
||||||
|
|
||||||
|
|
||||||
@ -67,6 +68,8 @@ def make_app(config):
|
|||||||
if ENV != "prod":
|
if ENV != "prod":
|
||||||
app.register_blueprint(dev_routes)
|
app.register_blueprint(dev_routes)
|
||||||
|
|
||||||
|
app.form_cache = FormCache(app.redis)
|
||||||
|
|
||||||
apply_authentication(app)
|
apply_authentication(app)
|
||||||
|
|
||||||
return app
|
return app
|
||||||
|
@ -16,3 +16,27 @@ def cache_form_data(redis, formdata, expiry_seconds=3600, key_prefix=DEFAULT_CAC
|
|||||||
def retrieve_form_data(redis, formdata_key, key_prefix="formcache"):
|
def retrieve_form_data(redis, formdata_key, key_prefix="formcache"):
|
||||||
data = redis.get("{}:{}".format(key_prefix, formdata_key))
|
data = redis.get("{}:{}".format(key_prefix, formdata_key))
|
||||||
return pickle.loads(data)
|
return pickle.loads(data)
|
||||||
|
|
||||||
|
|
||||||
|
class FormCache(object):
|
||||||
|
|
||||||
|
def __init__(self, redis):
|
||||||
|
self.redis = redis
|
||||||
|
|
||||||
|
def from_request(self, http_request):
|
||||||
|
cache_key = http_request.args.get("formCache")
|
||||||
|
if cache_key:
|
||||||
|
return self.read(cache_key)
|
||||||
|
|
||||||
|
def write(self, formdata, expiry_seconds=3600, key_prefix="formcache"):
|
||||||
|
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)
|
||||||
|
|
||||||
|
def read(self, formdata_key, key_prefix="formcache"):
|
||||||
|
data = self.redis.get(self._key(key_prefix, formdata_key))
|
||||||
|
return pickle.loads(data)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _key(prefix, hash_):
|
||||||
|
return "{}:{}".format(prefix, hash_)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user