[caching] Using request context rather than globals

This commit is contained in:
John Bodley
2020-05-01 20:21:11 -07:00
parent 858082f975
commit 90cd3889ac
3 changed files with 8 additions and 24 deletions

View File

@@ -1715,9 +1715,13 @@ class Superset(BaseSupersetView):
force=True,
)
g.form_data = form_data
payload = obj.get_payload()
delattr(g, "form_data")
# Temporarily define the form-data in the request context which may be
# leveraged by the Jinja macros.
with app.test_request_context(
data={"form_data": json.dumps(form_data)}
):
payload = obj.get_payload()
error = payload["error"]
status = payload["status"]
except Exception as ex:

View File

@@ -20,7 +20,7 @@ from typing import Any, Dict, List, Optional, Tuple
from urllib import parse
import simplejson as json
from flask import g, request
from flask import request
import superset.models.core as models
from superset import app, db, is_feature_enabled
@@ -111,10 +111,6 @@ def get_form_data(
if request_args_data:
form_data.update(json.loads(request_args_data))
# Fallback to using the Flask globals (used for cache warmup) if defined.
if not form_data and hasattr(g, "form_data"):
form_data = getattr(g, "form_data")
url_id = request.args.get("r")
if url_id:
saved_url = db.session.query(models.Url).filter_by(id=url_id).first()

View File

@@ -1312,19 +1312,3 @@ class UtilsTestCase(SupersetTestCase):
)
self.assertEqual(slc, None)
def test_get_form_data_globals(self) -> None:
with app.test_request_context():
g.form_data = {"foo": "bar"}
form_data, slc = get_form_data()
delattr(g, "form_data")
self.assertEqual(
form_data,
{
"foo": "bar",
"time_range_endpoints": get_time_range_endpoints(form_data={}),
},
)
self.assertEqual(slc, None)