diff --git a/mitm_tooling/transformation/superset/asset_bundles/asset_bundles.py b/mitm_tooling/transformation/superset/asset_bundles/asset_bundles.py index fd769bb5572e325793ca5b2df08f2b3f27343442..9a81e54ea6f29e87db0be4ce1c95072ca80f17a2 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 252c9c383528d66330db22c91694d278aeb695b3..490215d06c72c68fbc34d0eed0c729f2d3efff58 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 abee4c3cba8313db38bef11b13bcd110253f474e..48bdfd91bd7b3db97076f4dbc9874aa8b8b16cb5 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 e62eaa4ee3554cd1ee9660d76cea13c1ff56257c..e168f75e9cf1202238be90ca0164639af91463a1 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 1cbc1e4325dca5e8dce94869805578d35bc2c8f4..cf19ff1b7699c0151b62d00c0f225d33b3ff42f2 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)}