You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by jo...@apache.org on 2020/05/11 22:55:25 UTC

[incubator-superset] branch master updated: [caching] Using request context rather than globals (#9715)

This is an automated email from the ASF dual-hosted git repository.

johnbodley pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git


The following commit(s) were added to refs/heads/master by this push:
     new 04e3a4a  [caching] Using request context rather than globals (#9715)
04e3a4a is described below

commit 04e3a4a72df748b871d5c12c343796294da2d0e5
Author: John Bodley <45...@users.noreply.github.com>
AuthorDate: Mon May 11 15:55:05 2020 -0700

    [caching] Using request context rather than globals (#9715)
    
    Co-authored-by: John Bodley <jo...@airbnb.com>
---
 superset/views/core.py  | 10 +++++++---
 superset/views/utils.py |  6 +-----
 tests/utils_tests.py    | 16 ----------------
 3 files changed, 8 insertions(+), 24 deletions(-)

diff --git a/superset/views/core.py b/superset/views/core.py
index cb6683a..87bb921 100755
--- a/superset/views/core.py
+++ b/superset/views/core.py
@@ -1716,9 +1716,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:
diff --git a/superset/views/utils.py b/superset/views/utils.py
index 5ed7e48..3b5fd3a 100644
--- a/superset/views/utils.py
+++ b/superset/views/utils.py
@@ -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()
diff --git a/tests/utils_tests.py b/tests/utils_tests.py
index 9f3d0f9..4a4b640 100644
--- a/tests/utils_tests.py
+++ b/tests/utils_tests.py
@@ -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)