fix: Ch31968query context (#17600)
* a lot of console logs * import and export of query context
This commit is contained in:
parent
c70ac1cfe6
commit
d7e3a601b6
|
|
@ -34,7 +34,7 @@ logger = logging.getLogger(__name__)
|
|||
|
||||
|
||||
# keys present in the standard export that are not needed
|
||||
REMOVE_KEYS = ["datasource_type", "datasource_name"]
|
||||
REMOVE_KEYS = ["datasource_type", "datasource_name", "query_context"]
|
||||
|
||||
|
||||
class ExportChartsCommand(ExportModelsCommand):
|
||||
|
|
@ -55,8 +55,10 @@ class ExportChartsCommand(ExportModelsCommand):
|
|||
)
|
||||
# TODO (betodealmeida): move this logic to export_to_dict once this
|
||||
# becomes the default export endpoint
|
||||
for key in REMOVE_KEYS:
|
||||
del payload[key]
|
||||
payload = {
|
||||
key: value for key, value in payload.items() if key not in REMOVE_KEYS
|
||||
}
|
||||
|
||||
if payload.get("params"):
|
||||
try:
|
||||
payload["params"] = json.loads(payload["params"])
|
||||
|
|
|
|||
|
|
@ -96,10 +96,8 @@ class ImportChartsCommand(ImportModelsCommand):
|
|||
}
|
||||
)
|
||||
config["params"].update({"datasource": dataset.uid})
|
||||
|
||||
if config["query_context"]:
|
||||
# TODO (betodealmeida): export query_context as object, not string
|
||||
query_context = json.loads(config["query_context"])
|
||||
query_context["datasource"] = {"id": dataset.id, "type": "table"}
|
||||
config["query_context"] = json.dumps(query_context)
|
||||
del config["query_context"]
|
||||
|
||||
import_chart(session, config, overwrite=overwrite)
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ from sqlalchemy.orm import foreign, Query, relationship, RelationshipProperty, S
|
|||
|
||||
from superset import is_feature_enabled, security_manager
|
||||
from superset.constants import NULL_STRING
|
||||
from superset.datasets.commands.exceptions import DatasetNotFoundError
|
||||
from superset.models.helpers import AuditMixinNullable, ImportExportMixin, QueryResult
|
||||
from superset.models.slice import Slice
|
||||
from superset.typing import FilterValue, FilterValues, QueryObjectDict
|
||||
|
|
@ -319,8 +320,13 @@ class BaseDatasource(
|
|||
if "column" in filter_config
|
||||
)
|
||||
|
||||
# for legacy dashboard imports which have the wrong query_context in them
|
||||
try:
|
||||
query_context = slc.get_query_context()
|
||||
except DatasetNotFoundError:
|
||||
query_context = None
|
||||
|
||||
# legacy charts don't have query_context charts
|
||||
query_context = slc.get_query_context()
|
||||
if query_context:
|
||||
column_names.update(
|
||||
[
|
||||
|
|
|
|||
|
|
@ -79,7 +79,6 @@ class TestExportChartsCommand(SupersetTestCase):
|
|||
"slice_name": "Energy Sankey",
|
||||
"viz_type": "sankey",
|
||||
},
|
||||
"query_context": None,
|
||||
"cache_timeout": None,
|
||||
"dataset_uuid": str(example_chart.table.uuid),
|
||||
"uuid": str(example_chart.uuid),
|
||||
|
|
@ -87,6 +86,7 @@ class TestExportChartsCommand(SupersetTestCase):
|
|||
}
|
||||
|
||||
@patch("superset.security.manager.g")
|
||||
@pytest.mark.usefixtures("load_energy_table_with_slice")
|
||||
def test_export_chart_command_no_access(self, mock_g):
|
||||
"""Test that users can't export datasets they don't have access to"""
|
||||
mock_g.user = security_manager.find_user("gamma")
|
||||
|
|
@ -125,7 +125,6 @@ class TestExportChartsCommand(SupersetTestCase):
|
|||
"slice_name",
|
||||
"viz_type",
|
||||
"params",
|
||||
"query_context",
|
||||
"cache_timeout",
|
||||
"uuid",
|
||||
"version",
|
||||
|
|
@ -191,34 +190,6 @@ class TestImportChartsCommand(SupersetTestCase):
|
|||
)
|
||||
assert dataset.table_name == "imported_dataset"
|
||||
assert chart.table == dataset
|
||||
assert json.loads(chart.query_context) == {
|
||||
"datasource": {"id": dataset.id, "type": "table"},
|
||||
"force": False,
|
||||
"queries": [
|
||||
{
|
||||
"time_range": " : ",
|
||||
"filters": [],
|
||||
"extras": {
|
||||
"time_grain_sqla": None,
|
||||
"having": "",
|
||||
"having_druid": [],
|
||||
"where": "",
|
||||
},
|
||||
"applied_time_extras": {},
|
||||
"columns": [],
|
||||
"metrics": [],
|
||||
"annotation_layers": [],
|
||||
"row_limit": 5000,
|
||||
"timeseries_limit": 0,
|
||||
"order_desc": True,
|
||||
"url_params": {},
|
||||
"custom_params": {},
|
||||
"custom_form_data": {},
|
||||
}
|
||||
],
|
||||
"result_format": "json",
|
||||
"result_type": "full",
|
||||
}
|
||||
|
||||
database = (
|
||||
db.session.query(Database).filter_by(uuid=database_config["uuid"]).one()
|
||||
|
|
|
|||
Loading…
Reference in New Issue