chore: set UUID of examples DB (#15724)

This commit is contained in:
Beto Dealmeida 2021-07-26 17:45:48 -07:00 committed by GitHub
parent 2d0056507b
commit eeba326f8b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 28 additions and 9 deletions

View File

@ -70,7 +70,7 @@ class ImportExamplesCommand(ImportModelsCommand):
db.session.rollback()
raise self.import_error()
# pylint: disable=too-many-locals, arguments-differ
# pylint: disable=too-many-locals, arguments-differ, too-many-branches
@staticmethod
def _import(
session: Session,
@ -86,16 +86,23 @@ class ImportExamplesCommand(ImportModelsCommand):
database_ids[str(database.uuid)] = database.id
# import datasets
# TODO (betodealmeida): once we have all examples being imported we can
# have a stable UUID for the database stored in the dataset YAML; for
# now we need to fetch the current ID.
examples_id = (
db.session.query(Database).filter_by(database_name="examples").one().id
# If database_uuid is not in the list of UUIDs it means that the examples
# database was created before its UUID was frozen, so it has a random UUID.
# We need to determine its ID so we can point the dataset to it.
examples_db = (
db.session.query(Database).filter_by(database_name="examples").first()
)
dataset_info: Dict[str, Dict[str, Any]] = {}
for file_name, config in configs.items():
if file_name.startswith("datasets/"):
config["database_id"] = examples_id
# find the ID of the corresponding database
if config["database_uuid"] not in database_ids:
if examples_db is None:
raise Exception("Cannot find examples database")
config["database_id"] = examples_db.id
else:
config["database_id"] = database_ids[config["database_uuid"]]
dataset = import_dataset(
session, config, overwrite=overwrite, force_data=force_data
)

View File

@ -21,6 +21,10 @@
NULL_STRING = "<NULL>"
# UUID for the examples database
EXAMPLES_DB_UUID = "a2dc77af-e654-49bb-b321-40f6b559a1ee"
class RouteMethod: # pylint: disable=too-few-public-methods
"""
Route methods are a FAB concept around ModelView and RestModelView

View File

@ -73,4 +73,4 @@ columns:
description: null
python_date_format: null
version: 1.0.0
database_uuid: 566ca280-3da8-967e-4aa4-4b349218736a
database_uuid: a2dc77af-e654-49bb-b321-40f6b559a1ee

View File

@ -85,6 +85,7 @@ from typing_extensions import TypedDict
import _thread # pylint: disable=C0411
from superset.constants import (
EXAMPLES_DB_UUID,
EXTRA_FORM_DATA_APPEND_KEYS,
EXTRA_FORM_DATA_OVERRIDE_EXTRA_KEYS,
EXTRA_FORM_DATA_OVERRIDE_REGULAR_MAPPINGS,
@ -1168,9 +1169,16 @@ def get_or_create_db(
db.session.query(models.Database).filter_by(database_name=database_name).first()
)
# databases with a fixed UUID
uuids = {
"examples": EXAMPLES_DB_UUID,
}
if not database and always_create:
logger.info("Creating database reference for %s", database_name)
database = models.Database(database_name=database_name)
database = models.Database(
database_name=database_name, uuid=uuids.get(database_name)
)
db.session.add(database)
if database: