fix: implement legacy druid dashboard import (#10135)
This commit is contained in:
parent
b205ce32b0
commit
16cffd056c
|
|
@ -37,6 +37,13 @@ def decode_dashboards( # pylint: disable=too-many-return-statements
|
|||
Function to be passed into json.loads obj_hook parameter
|
||||
Recreates the dashboard object from a json representation.
|
||||
"""
|
||||
from superset.connectors.druid.models import (
|
||||
DruidCluster,
|
||||
DruidColumn,
|
||||
DruidDatasource,
|
||||
DruidMetric,
|
||||
)
|
||||
|
||||
if "__Dashboard__" in o:
|
||||
return Dashboard(**o["__Dashboard__"])
|
||||
if "__Slice__" in o:
|
||||
|
|
@ -47,6 +54,14 @@ def decode_dashboards( # pylint: disable=too-many-return-statements
|
|||
return SqlaTable(**o["__SqlaTable__"])
|
||||
if "__SqlMetric__" in o:
|
||||
return SqlMetric(**o["__SqlMetric__"])
|
||||
if "__DruidCluster__" in o:
|
||||
return DruidCluster(**o["__DruidCluster__"])
|
||||
if "__DruidColumn__" in o:
|
||||
return DruidColumn(**o["__DruidColumn__"])
|
||||
if "__DruidDatasource__" in o:
|
||||
return DruidDatasource(**o["__DruidDatasource__"])
|
||||
if "__DruidMetric__" in o:
|
||||
return DruidMetric(**o["__DruidMetric__"])
|
||||
if "__datetime__" in o:
|
||||
return datetime.strptime(o["__datetime__"], "%Y-%m-%dT%H:%M:%S")
|
||||
|
||||
|
|
@ -60,7 +75,6 @@ def import_dashboards(
|
|||
current_tt = int(time.time())
|
||||
import_time = current_tt if import_time is None else import_time
|
||||
data = json.loads(data_stream.read(), object_hook=decode_dashboards)
|
||||
# TODO: import DRUID datasources
|
||||
for table in data["datasources"]:
|
||||
type(table).import_obj(table, import_time=import_time)
|
||||
session.commit()
|
||||
|
|
|
|||
Loading…
Reference in New Issue