diff --git a/superset/views/core.py b/superset/views/core.py index 641a68b1150c..9f39b35ecbeb 100755 --- a/superset/views/core.py +++ b/superset/views/core.py @@ -1715,9 +1715,13 @@ def warm_up_cache(self): 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: diff --git a/superset/views/utils.py b/superset/views/utils.py index 5ed7e48383b0..3b5fd3a37410 100644 --- a/superset/views/utils.py +++ b/superset/views/utils.py @@ -20,7 +20,7 @@ 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() diff --git a/tests/utils_tests.py b/tests/utils_tests.py index 9f3d0f95fe79..4a4b640a338a 100644 --- a/tests/utils_tests.py +++ b/tests/utils_tests.py @@ -1312,19 +1312,3 @@ def test_get_form_data_request_args_and_form(self) -> None: ) 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)