[cache] Cleaning up viz/cache logic (#9375)
Co-authored-by: John Bodley <john.bodley@airbnb.com>
This commit is contained in:
parent
5b07c8d229
commit
19da9042ff
|
|
@ -213,6 +213,8 @@ class QueryContext:
|
|||
df = query_result["df"]
|
||||
if status != utils.QueryStatus.FAILED:
|
||||
stats_logger.incr("loaded_from_source")
|
||||
if not self.force:
|
||||
stats_logger.incr("loaded_from_source_without_force")
|
||||
is_loaded = True
|
||||
except Exception as e: # pylint: disable=broad-except
|
||||
logger.exception(e)
|
||||
|
|
|
|||
|
|
@ -232,23 +232,6 @@ class Slice(
|
|||
def changed_by_url(self) -> str:
|
||||
return f"/superset/profile/{self.created_by.username}"
|
||||
|
||||
def get_viz(self, force: bool = False) -> BaseViz:
|
||||
"""Creates :py:class:viz.BaseViz object from the url_params_multidict.
|
||||
|
||||
:return: object of the 'viz_type' type that is taken from the
|
||||
url_params_multidict or self.params.
|
||||
:rtype: :py:class:viz.BaseViz
|
||||
"""
|
||||
slice_params = json.loads(self.params)
|
||||
slice_params["slice_id"] = self.id
|
||||
slice_params["json"] = "false"
|
||||
slice_params["slice_name"] = self.slice_name
|
||||
slice_params["viz_type"] = self.viz_type if self.viz_type else "table"
|
||||
|
||||
return viz_types[slice_params.get("viz_type")](
|
||||
self.datasource, form_data=slice_params, force=force
|
||||
)
|
||||
|
||||
@property
|
||||
def icons(self) -> str:
|
||||
return f"""
|
||||
|
|
|
|||
|
|
@ -187,7 +187,7 @@ def check_datasource_perms(
|
|||
except SupersetException as e:
|
||||
raise SupersetSecurityException(str(e))
|
||||
|
||||
viz_obj = get_viz(
|
||||
viz_obj = get_viz( # type: ignore
|
||||
datasource_type=datasource_type,
|
||||
datasource_id=datasource_id,
|
||||
form_data=form_data,
|
||||
|
|
@ -576,27 +576,6 @@ class Superset(BaseSupersetView):
|
|||
session.commit()
|
||||
return redirect("/accessrequestsmodelview/list/")
|
||||
|
||||
def get_viz(
|
||||
self,
|
||||
slice_id=None,
|
||||
form_data=None,
|
||||
datasource_type=None,
|
||||
datasource_id=None,
|
||||
force=False,
|
||||
):
|
||||
if slice_id:
|
||||
slc = db.session.query(Slice).filter_by(id=slice_id).one()
|
||||
return slc.get_viz()
|
||||
else:
|
||||
viz_type = form_data.get("viz_type", "table")
|
||||
datasource = ConnectorRegistry.get_datasource(
|
||||
datasource_type, datasource_id, db.session
|
||||
)
|
||||
viz_obj = viz.viz_types[viz_type](
|
||||
datasource, form_data=form_data, force=force
|
||||
)
|
||||
return viz_obj
|
||||
|
||||
@has_access
|
||||
@expose("/slice/<slice_id>/")
|
||||
def slice(self, slice_id):
|
||||
|
|
@ -2783,19 +2762,6 @@ class Superset(BaseSupersetView):
|
|||
"superset/basic.html", entry="sqllab", bootstrap_data=bootstrap_data
|
||||
)
|
||||
|
||||
@api
|
||||
@handle_api_exception
|
||||
@has_access_api
|
||||
@expose("/slice_query/<slice_id>/")
|
||||
def slice_query(self, slice_id):
|
||||
"""
|
||||
This method exposes an API endpoint to
|
||||
get the database query string for this slice
|
||||
"""
|
||||
viz_obj = get_viz(slice_id)
|
||||
security_manager.assert_viz_permission(viz_obj)
|
||||
return self.get_query_string_response(viz_obj)
|
||||
|
||||
@api
|
||||
@has_access_api
|
||||
@expose("/schemas_access_for_csv_upload")
|
||||
|
|
|
|||
|
|
@ -80,12 +80,11 @@ def get_permissions(user):
|
|||
|
||||
|
||||
def get_viz(
|
||||
slice_id=None, form_data=None, datasource_type=None, datasource_id=None, force=False
|
||||
form_data: Dict[str, Any],
|
||||
datasource_type: str,
|
||||
datasource_id: int,
|
||||
force: bool = False,
|
||||
):
|
||||
if slice_id:
|
||||
slc = db.session.query(Slice).filter_by(id=slice_id).one()
|
||||
return slc.get_viz()
|
||||
|
||||
viz_type = form_data.get("viz_type", "table")
|
||||
datasource = ConnectorRegistry.get_datasource(
|
||||
datasource_type, datasource_id, db.session
|
||||
|
|
|
|||
|
|
@ -443,6 +443,8 @@ class BaseViz:
|
|||
df = self.get_df(query_obj)
|
||||
if self.status != utils.QueryStatus.FAILED:
|
||||
stats_logger.incr("loaded_from_source")
|
||||
if not self.force:
|
||||
stats_logger.incr("loaded_from_source_without_force")
|
||||
is_loaded = True
|
||||
except Exception as e:
|
||||
logger.exception(e)
|
||||
|
|
|
|||
|
|
@ -731,15 +731,6 @@ class CoreTests(SupersetTestCase):
|
|||
self.get_json_resp(slc_url, {"form_data": json.dumps(slc.form_data)})
|
||||
self.assertEqual(1, qry.count())
|
||||
|
||||
def test_slice_query_endpoint(self):
|
||||
# API endpoint for query string
|
||||
self.login(username="admin")
|
||||
slc = self.get_slice("Girls", db.session)
|
||||
resp = self.get_resp("/superset/slice_query/{}/".format(slc.id))
|
||||
assert "query" in resp
|
||||
assert "language" in resp
|
||||
self.logout()
|
||||
|
||||
def test_import_csv(self):
|
||||
self.login(username="admin")
|
||||
table_name = "".join(random.choice(string.ascii_uppercase) for _ in range(5))
|
||||
|
|
|
|||
Loading…
Reference in New Issue