mirror of
https://github.com/apache/superset.git
synced 2026-04-08 10:55:20 +00:00
343 lines
8.1 KiB
Python
343 lines
8.1 KiB
Python
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
# KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations
|
|
# under the License.
|
|
"""Loads datasets, dashboards and slices in a new superset instance"""
|
|
import json
|
|
import textwrap
|
|
|
|
from superset import db
|
|
from superset.models.dashboard import Dashboard
|
|
from superset.models.slice import Slice
|
|
|
|
from .helpers import update_slice_ids
|
|
|
|
|
|
def load_tabbed_dashboard(_: bool = False) -> None:
|
|
"""Creating a tabbed dashboard"""
|
|
|
|
print("Creating a dashboard with nested tabs")
|
|
slug = "tabbed_dash"
|
|
dash = db.session.query(Dashboard).filter_by(slug=slug).first()
|
|
|
|
if not dash:
|
|
dash = Dashboard()
|
|
|
|
# reuse charts in "World's Bank Data and create
|
|
# new dashboard with nested tabs
|
|
tabbed_dash_slices = set()
|
|
tabbed_dash_slices.add("Region Filter")
|
|
tabbed_dash_slices.add("Growth Rate")
|
|
tabbed_dash_slices.add("Treemap")
|
|
tabbed_dash_slices.add("Box plot")
|
|
|
|
js = textwrap.dedent(
|
|
"""\
|
|
{
|
|
"CHART-c0EjR-OZ0n": {
|
|
"children": [],
|
|
"id": "CHART-c0EjR-OZ0n",
|
|
"meta": {
|
|
"chartId": 870,
|
|
"height": 50,
|
|
"sliceName": "Box plot",
|
|
"width": 4
|
|
},
|
|
"parents": [
|
|
"ROOT_ID",
|
|
"TABS-lV0r00f4H1",
|
|
"TAB-NF3dlrWGS",
|
|
"ROW-7G2o5uDvfo"
|
|
],
|
|
"type": "CHART"
|
|
},
|
|
"CHART-dxV7Il74hH": {
|
|
"children": [],
|
|
"id": "CHART-dxV7Il74hH",
|
|
"meta": {
|
|
"chartId": 797,
|
|
"height": 50,
|
|
"sliceName": "Treemap",
|
|
"width": 4
|
|
},
|
|
"parents": [
|
|
"ROOT_ID",
|
|
"TABS-lV0r00f4H1",
|
|
"TAB-gcQJxApOZS",
|
|
"TABS-afnrUvdxYF",
|
|
"TAB-jNNd4WWar1",
|
|
"ROW-7ygtDczaQ"
|
|
],
|
|
"type": "CHART"
|
|
},
|
|
"CHART-jJ5Yj1Ptaz": {
|
|
"children": [],
|
|
"id": "CHART-jJ5Yj1Ptaz",
|
|
"meta": {
|
|
"chartId": 789,
|
|
"height": 50,
|
|
"sliceName": "World's Population",
|
|
"width": 4
|
|
},
|
|
"parents": [
|
|
"ROOT_ID",
|
|
"TABS-lV0r00f4H1",
|
|
"TAB-NF3dlrWGS",
|
|
"TABS-CSjo6VfNrj",
|
|
"TAB-z81Q87PD7",
|
|
"ROW-G73z9PIHn"
|
|
],
|
|
"type": "CHART"
|
|
},
|
|
"CHART-z4gmEuCqQ5": {
|
|
"children": [],
|
|
"id": "CHART-z4gmEuCqQ5",
|
|
"meta": {
|
|
"chartId": 788,
|
|
"height": 50,
|
|
"sliceName": "Region Filter",
|
|
"width": 4
|
|
},
|
|
"parents": [
|
|
"ROOT_ID",
|
|
"TABS-lV0r00f4H1",
|
|
"TAB-NF3dlrWGS",
|
|
"TABS-CSjo6VfNrj",
|
|
"TAB-EcNm_wh922",
|
|
"ROW-LCjsdSetJ"
|
|
],
|
|
"type": "CHART"
|
|
},
|
|
"DASHBOARD_VERSION_KEY": "v2",
|
|
"GRID_ID": {
|
|
"children": [],
|
|
"id": "GRID_ID",
|
|
"type": "GRID"
|
|
},
|
|
"HEADER_ID": {
|
|
"id": "HEADER_ID",
|
|
"meta": {
|
|
"text": "Tabbed Dashboard"
|
|
},
|
|
"type": "HEADER"
|
|
},
|
|
"ROOT_ID": {
|
|
"children": [
|
|
"TABS-lV0r00f4H1"
|
|
],
|
|
"id": "ROOT_ID",
|
|
"type": "ROOT"
|
|
},
|
|
"ROW-7G2o5uDvfo": {
|
|
"children": [
|
|
"CHART-c0EjR-OZ0n"
|
|
],
|
|
"id": "ROW-7G2o5uDvfo",
|
|
"meta": {
|
|
"background": "BACKGROUND_TRANSPARENT"
|
|
},
|
|
"parents": [
|
|
"ROOT_ID",
|
|
"TABS-lV0r00f4H1",
|
|
"TAB-NF3dlrWGS"
|
|
],
|
|
"type": "ROW"
|
|
},
|
|
"ROW-7ygtDczaQ": {
|
|
"children": [
|
|
"CHART-dxV7Il74hH"
|
|
],
|
|
"id": "ROW-7ygtDczaQ",
|
|
"meta": {
|
|
"background": "BACKGROUND_TRANSPARENT"
|
|
},
|
|
"parents": [
|
|
"ROOT_ID",
|
|
"TABS-lV0r00f4H1",
|
|
"TAB-gcQJxApOZS",
|
|
"TABS-afnrUvdxYF",
|
|
"TAB-jNNd4WWar1"
|
|
],
|
|
"type": "ROW"
|
|
},
|
|
"ROW-G73z9PIHn": {
|
|
"children": [
|
|
"CHART-jJ5Yj1Ptaz"
|
|
],
|
|
"id": "ROW-G73z9PIHn",
|
|
"meta": {
|
|
"background": "BACKGROUND_TRANSPARENT"
|
|
},
|
|
"parents": [
|
|
"ROOT_ID",
|
|
"TABS-lV0r00f4H1",
|
|
"TAB-NF3dlrWGS",
|
|
"TABS-CSjo6VfNrj",
|
|
"TAB-z81Q87PD7"
|
|
],
|
|
"type": "ROW"
|
|
},
|
|
"ROW-LCjsdSetJ": {
|
|
"children": [
|
|
"CHART-z4gmEuCqQ5"
|
|
],
|
|
"id": "ROW-LCjsdSetJ",
|
|
"meta": {
|
|
"background": "BACKGROUND_TRANSPARENT"
|
|
},
|
|
"parents": [
|
|
"ROOT_ID",
|
|
"TABS-lV0r00f4H1",
|
|
"TAB-NF3dlrWGS",
|
|
"TABS-CSjo6VfNrj",
|
|
"TAB-EcNm_wh922"
|
|
],
|
|
"type": "ROW"
|
|
},
|
|
"TAB-EcNm_wh922": {
|
|
"children": [
|
|
"ROW-LCjsdSetJ"
|
|
],
|
|
"id": "TAB-EcNm_wh922",
|
|
"meta": {
|
|
"text": "row tab 1"
|
|
},
|
|
"parents": [
|
|
"ROOT_ID",
|
|
"TABS-lV0r00f4H1",
|
|
"TAB-NF3dlrWGS",
|
|
"TABS-CSjo6VfNrj"
|
|
],
|
|
"type": "TAB"
|
|
},
|
|
"TAB-NF3dlrWGS": {
|
|
"children": [
|
|
"ROW-7G2o5uDvfo",
|
|
"TABS-CSjo6VfNrj"
|
|
],
|
|
"id": "TAB-NF3dlrWGS",
|
|
"meta": {
|
|
"text": "Tab A"
|
|
},
|
|
"parents": [
|
|
"ROOT_ID",
|
|
"TABS-lV0r00f4H1"
|
|
],
|
|
"type": "TAB"
|
|
},
|
|
"TAB-gcQJxApOZS": {
|
|
"children": [
|
|
"TABS-afnrUvdxYF"
|
|
],
|
|
"id": "TAB-gcQJxApOZS",
|
|
"meta": {
|
|
"text": "Tab B"
|
|
},
|
|
"parents": [
|
|
"ROOT_ID",
|
|
"TABS-lV0r00f4H1"
|
|
],
|
|
"type": "TAB"
|
|
},
|
|
"TAB-jNNd4WWar1": {
|
|
"children": [
|
|
"ROW-7ygtDczaQ"
|
|
],
|
|
"id": "TAB-jNNd4WWar1",
|
|
"meta": {
|
|
"text": "New Tab"
|
|
},
|
|
"parents": [
|
|
"ROOT_ID",
|
|
"TABS-lV0r00f4H1",
|
|
"TAB-gcQJxApOZS",
|
|
"TABS-afnrUvdxYF"
|
|
],
|
|
"type": "TAB"
|
|
},
|
|
"TAB-z81Q87PD7": {
|
|
"children": [
|
|
"ROW-G73z9PIHn"
|
|
],
|
|
"id": "TAB-z81Q87PD7",
|
|
"meta": {
|
|
"text": "row tab 2"
|
|
},
|
|
"parents": [
|
|
"ROOT_ID",
|
|
"TABS-lV0r00f4H1",
|
|
"TAB-NF3dlrWGS",
|
|
"TABS-CSjo6VfNrj"
|
|
],
|
|
"type": "TAB"
|
|
},
|
|
"TABS-CSjo6VfNrj": {
|
|
"children": [
|
|
"TAB-EcNm_wh922",
|
|
"TAB-z81Q87PD7"
|
|
],
|
|
"id": "TABS-CSjo6VfNrj",
|
|
"meta": {},
|
|
"parents": [
|
|
"ROOT_ID",
|
|
"TABS-lV0r00f4H1",
|
|
"TAB-NF3dlrWGS"
|
|
],
|
|
"type": "TABS"
|
|
},
|
|
"TABS-afnrUvdxYF": {
|
|
"children": [
|
|
"TAB-jNNd4WWar1"
|
|
],
|
|
"id": "TABS-afnrUvdxYF",
|
|
"meta": {},
|
|
"parents": [
|
|
"ROOT_ID",
|
|
"TABS-lV0r00f4H1",
|
|
"TAB-gcQJxApOZS"
|
|
],
|
|
"type": "TABS"
|
|
},
|
|
"TABS-lV0r00f4H1": {
|
|
"children": [
|
|
"TAB-NF3dlrWGS",
|
|
"TAB-gcQJxApOZS"
|
|
],
|
|
"id": "TABS-lV0r00f4H1",
|
|
"meta": {},
|
|
"parents": [
|
|
"ROOT_ID"
|
|
],
|
|
"type": "TABS"
|
|
}
|
|
}
|
|
"""
|
|
)
|
|
pos = json.loads(js)
|
|
slices = [
|
|
db.session.query(Slice).filter_by(slice_name=name).first()
|
|
for name in tabbed_dash_slices
|
|
]
|
|
|
|
slices = sorted(slices, key=lambda x: x.id)
|
|
update_slice_ids(pos, slices)
|
|
dash.position_json = json.dumps(pos, indent=4)
|
|
dash.slices = slices
|
|
dash.dashboard_title = "Tabbed Dashboard"
|
|
dash.slug = slug
|
|
|
|
db.session.merge(dash)
|
|
db.session.commit()
|