12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- # 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 os
- import zlib
- from io import BytesIO
- from typing import Set
- from urllib import request
- from superset import app, db
- from superset.connectors.connector_registry import ConnectorRegistry
- from superset.models import core as models
- from superset.models.slice import Slice
- BASE_URL = "https://github.com/apache-superset/examples-data/blob/master/"
- # Shortcuts
- DB = models.Database
- TBL = ConnectorRegistry.sources["table"]
- config = app.config
- EXAMPLES_FOLDER = os.path.join(config["BASE_DIR"], "examples")
- misc_dash_slices: Set[str] = set() # slices assembled in a 'Misc Chart' dashboard
- def update_slice_ids(layout_dict, slices):
- charts = [
- component
- for component in layout_dict.values()
- if isinstance(component, dict) and component["type"] == "CHART"
- ]
- sorted_charts = sorted(charts, key=lambda k: k["meta"]["chartId"])
- for i, chart_component in enumerate(sorted_charts):
- if i < len(slices):
- chart_component["meta"]["chartId"] = int(slices[i].id)
- def merge_slice(slc):
- o = db.session.query(Slice).filter_by(slice_name=slc.slice_name).first()
- if o:
- db.session.delete(o)
- db.session.add(slc)
- db.session.commit()
- def get_slice_json(defaults, **kwargs):
- d = defaults.copy()
- d.update(kwargs)
- return json.dumps(d, indent=4, sort_keys=True)
- def get_example_data(filepath, is_gzip=True, make_bytes=False):
- module_path = os.path.dirname(__file__)
- filename = module_path + filepath
- # with open(fr'E:\\projects\\work\\trunk\\incubator-superset0.99\\superset\\examples-data\\{filepath}', 'rb', buffering=-1) as f: #/会被转义,加r
- with open(fr'{filename}', 'rb', buffering=-1) as f: #/会被转义,加r
- content = f.read()
- # content = request.urlopen(f"{BASE_URL}{filepath}?raw=true").read()
- if is_gzip:
- content = zlib.decompress(content, zlib.MAX_WBITS | 16)
- if make_bytes:
- content = BytesIO(content)
- return content
|