This is an automated email from the ASF dual-hosted git repository.

villebro pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git


The following commit(s) were added to refs/heads/master by this push:
     new 16cffd0  fix: implement legacy druid dashboard import (#10135)
16cffd0 is described below

commit 16cffd056cc58d85f6f6af07c3b4bcf43a85f10a
Author: Ville Brofeldt <33317356+ville...@users.noreply.github.com>
AuthorDate: Thu Jun 25 18:52:13 2020 +0300

    fix: implement legacy druid dashboard import (#10135)
---
 superset/utils/dashboard_import_export.py | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/superset/utils/dashboard_import_export.py 
b/superset/utils/dashboard_import_export.py
index c33016c..05889b7 100644
--- a/superset/utils/dashboard_import_export.py
+++ b/superset/utils/dashboard_import_export.py
@@ -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()

Reply via email to