From 4964628e007e77052e6162d3fd69b6c980a1165a Mon Sep 17 00:00:00 2001
From: Leah Tacke genannt Unterberg <leah.tgu@pads.rwth-aachen.de>
Date: Thu, 22 May 2025 17:20:32 +0200
Subject: [PATCH] hotfixes

---
 .../superset/asset_bundles/asset_bundles.py            |  2 +-
 mitm_tooling/transformation/superset/from_sql.py       |  9 ++++++---
 mitm_tooling/transformation/superset/interface.py      |  4 ++--
 .../superset/visualizations/abstract/mitm.py           | 10 ++++++----
 .../transformation/superset/visualizations/registry.py | 10 +++++-----
 5 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/mitm_tooling/transformation/superset/asset_bundles/asset_bundles.py b/mitm_tooling/transformation/superset/asset_bundles/asset_bundles.py
index fd769bb..9a81e54 100644
--- a/mitm_tooling/transformation/superset/asset_bundles/asset_bundles.py
+++ b/mitm_tooling/transformation/superset/asset_bundles/asset_bundles.py
@@ -132,7 +132,7 @@ class SupersetVisualizationBundle(SupersetAssetBundle):
 class SupersetMitMDatasetBundle(SupersetAssetBundle):
     mitm_dataset: SupersetMitMDatasetDef
     datasource_bundle: SupersetDatasourceBundle
-    visualization_bundle: SupersetVisualizationBundle = pydantic.Field(default_factory=SupersetVisualizationBundle)
+    visualization_bundle: SupersetVisualizationBundle
 
     @property
     def identifiers(self) -> MitMDatasetIdentifierBundle:
diff --git a/mitm_tooling/transformation/superset/from_sql.py b/mitm_tooling/transformation/superset/from_sql.py
index 252c9c3..490215d 100644
--- a/mitm_tooling/transformation/superset/from_sql.py
+++ b/mitm_tooling/transformation/superset/from_sql.py
@@ -4,7 +4,7 @@ from mitm_tooling.extraction.sql.data_models import DBMetaInfo
 from mitm_tooling.extraction.sql.data_models.db_meta import DBMetaInfoBase
 from mitm_tooling.extraction.sql.db import connect_and_reflect
 from .asset_bundles import SupersetDatasourceBundle, \
-    SupersetMitMDatasetBundle, DatasourceIdentifierBundle, MitMDatasetIdentifierBundle
+    SupersetMitMDatasetBundle, DatasourceIdentifierBundle, MitMDatasetIdentifierBundle, SupersetVisualizationBundle
 from .common import DBConnectionInfo, MitMDatasetInfo
 from .common import _mk_sqlite_engine, SQLiteFileOrEngine
 from .factories.database import mk_database
@@ -57,7 +57,9 @@ def db_meta_into_mitm_dataset_bundle(db_meta: DBMetaInfoBase,
                                    header=dataset_info.header,
                                    database_uuid=datasource_bundle.database_uuid,
                                    table_uuids=datasource_bundle.dataset_uuids)
-    return SupersetMitMDatasetBundle(mitm_dataset=mitm_dataset, datasource_bundle=datasource_bundle)
+
+    viz_bundle = SupersetVisualizationBundle(named_charts=identifiers.ch_id_map, viz_collections=identifiers.viz_id_map)
+    return SupersetMitMDatasetBundle(mitm_dataset=mitm_dataset, datasource_bundle=datasource_bundle, visualization_bundle=viz_bundle)
 
 
 def db_into_superset_datasource_bundle(arg: SQLiteFileOrEngine,
@@ -88,4 +90,5 @@ def db_into_mitm_dataset_bundle(arg: SQLiteFileOrEngine,
                                    header=dataset_info.header,
                                    database_uuid=datasource_bundle.database_uuid,
                                    table_uuids=datasource_bundle.dataset_uuids)
-    return SupersetMitMDatasetBundle(mitm_dataset=mitm_dataset, datasource_bundle=datasource_bundle)
+    viz_bundle = SupersetVisualizationBundle(named_charts=identifiers.ch_id_map, viz_collections=identifiers.viz_id_map)
+    return SupersetMitMDatasetBundle(mitm_dataset=mitm_dataset, datasource_bundle=datasource_bundle, visualization_bundle=viz_bundle)
diff --git a/mitm_tooling/transformation/superset/interface.py b/mitm_tooling/transformation/superset/interface.py
index abee4c3..48bdfd9 100644
--- a/mitm_tooling/transformation/superset/interface.py
+++ b/mitm_tooling/transformation/superset/interface.py
@@ -16,12 +16,12 @@ def mk_superset_datasource_bundle(header: Header,
 
 
 def mk_superset_visualization_bundle(header: Header,
-                                     mitm_dataset_identifiers: MitMDatasetIdentifierBundle,
+                                     identifiers: MitMDatasetIdentifierBundle,
                                      visualization_types: Iterable[
                                          VisualizationType],
                                      just_placeholders: bool = False) -> SupersetVisualizationBundle:
     return SupersetVisualizationBundle.combine(*(
-        mk_visualization(vzt, header, mitm_dataset_identifiers, just_placeholders=just_placeholders) for vzt
+        mk_visualization(vzt, header, identifiers, just_placeholders=just_placeholders) for vzt
         in set(visualization_types)
     ))
 
diff --git a/mitm_tooling/transformation/superset/visualizations/abstract/mitm.py b/mitm_tooling/transformation/superset/visualizations/abstract/mitm.py
index e62eaa4..e168f75 100644
--- a/mitm_tooling/transformation/superset/visualizations/abstract/mitm.py
+++ b/mitm_tooling/transformation/superset/visualizations/abstract/mitm.py
@@ -52,22 +52,24 @@ class MitMVisualizationsCreator(ABC):
                                         mitm_dataset_identifiers.ch_id_map,
                                         dashboard_identifier=find_dash_id(mitm_dataset_identifiers,
                                                                           self.viz_collection_name,
-                                                                          name),
+                                                                          creator.viz_name),
                                         viz_collection=self.viz_collection_name) for
                 name, creator in creators.items()}
 
     def mk_placeholder_bundle(self,
                               mitm_dataset_identifiers: MitMDatasetIdentifierBundle) -> SupersetVisualizationBundle:
         from .placeholders import EmptyDashboard
+        creators: dict[str, DashboardCreator] = {name: constr(self.header, mitm_dataset_identifiers.mitm_dataset) for
+                                                 name, constr in self.dashboard_creator_constructors.items()}
         return SupersetVisualizationBundle.combine(*(EmptyDashboard().mk_bundle(mitm_dataset_identifiers.ds_id_map,
                                                                                 mitm_dataset_identifiers.ch_id_map,
                                                                                 dashboard_identifier=find_dash_id(
                                                                                     mitm_dataset_identifiers,
                                                                                     self.viz_collection_name,
-                                                                                    name),
+                                                                                    creator.viz_name),
                                                                                 viz_collection=self.viz_collection_name)
-                                                     for name in
-                                                     self.dashboard_creator_constructors))
+                                                     for name, creator in
+                                                     creators.items()))
 
     def mk_bundle(self,
                   mitm_dataset_identifiers: MitMDatasetIdentifierBundle) -> SupersetVisualizationBundle:
diff --git a/mitm_tooling/transformation/superset/visualizations/registry.py b/mitm_tooling/transformation/superset/visualizations/registry.py
index 1cbc1e4..cf19ff1 100644
--- a/mitm_tooling/transformation/superset/visualizations/registry.py
+++ b/mitm_tooling/transformation/superset/visualizations/registry.py
@@ -23,20 +23,20 @@ def get_mitm_visualization_creator(mitm: MITM, visualization_type: Visualization
 
 def mk_visualization(visualization_type: VisualizationType,
                      header: Header,
-                     mitm_dataset_identifiers: MitMDatasetIdentifierBundle,
+                     identifiers: MitMDatasetIdentifierBundle,
                      just_placeholders: bool = False) -> SupersetVisualizationBundle | None:
     if (creator_cls := get_mitm_visualization_creator(header.mitm, visualization_type)) is not None:
         creator = creator_cls(header)
         if just_placeholders:
-            return creator.mk_placeholder_bundle(mitm_dataset_identifiers)
+            return creator.mk_placeholder_bundle(identifiers)
         else:
-            return creator.mk_bundle(mitm_dataset_identifiers)
+            return creator.mk_bundle(identifiers)
     return None
 
 
 def mk_visualizations(visualization_types: Iterable[VisualizationType],
                       header: Header,
-                      mitm_dataset_identifiers: MitMDatasetIdentifierBundle,
+                      identifiers: MitMDatasetIdentifierBundle,
                       just_placeholders: bool = False) -> dict[VisualizationType, SupersetVisualizationBundle]:
     return {vt: viz for vt in set(visualization_types) if (
-        viz := mk_visualization(vt, header, mitm_dataset_identifiers, just_placeholders=just_placeholders) is not None)}
+        (viz := mk_visualization(vt, header, identifiers, just_placeholders=just_placeholders)) is not None)}
-- 
GitLab