diff --git a/superset/connectors/druid/models.py b/superset/connectors/druid/models.py index 79c2d8dc7c653..676ac32cc6430 100644 --- a/superset/connectors/druid/models.py +++ b/superset/connectors/druid/models.py @@ -1691,25 +1691,25 @@ def external_metadata(self) -> List[Dict[str, Any]]: latest_metadata = self.latest_metadata() or {} return [{"name": k, "type": v.get("type")} for k, v in latest_metadata.items()] + @staticmethod + def update_datasource( + _mapper: Mapper, _connection: Connection, obj: Union[DruidColumn, DruidMetric] + ) -> None: + """ + Forces an update to the datasource's changed_on value when a metric or column on + the datasource is updated. This busts the cache key for all charts that use the + datasource. -def update_datasource( - _mapper: Mapper, _connection: Connection, obj: Union[DruidColumn, DruidMetric] -) -> None: - """ - Forces an update to the datasource's changed_on value when a metric or column on - the datasource is updated. This busts the cache key for all charts that use the - datasource. - - :param _mapper: Unused. - :param _connection: Unused. - :param obj: The metric or column that was updated. - """ - db.session.execute( - update(DruidDatasource).where(DruidDatasource.id == obj.datasource.id) - ) + :param _mapper: Unused. + :param _connection: Unused. + :param obj: The metric or column that was updated. + """ + db.session.execute( + update(DruidDatasource).where(DruidDatasource.id == obj.datasource.id) + ) sa.event.listen(DruidDatasource, "after_insert", security_manager.set_perm) sa.event.listen(DruidDatasource, "after_update", security_manager.set_perm) -sa.event.listen(DruidMetric, "after_update", update_datasource) -sa.event.listen(DruidColumn, "after_update", update_datasource) +sa.event.listen(DruidMetric, "after_update", DruidDatasource.update_datasource) +sa.event.listen(DruidColumn, "after_update", DruidDatasource.update_datasource) diff --git a/superset/connectors/sqla/models.py b/superset/connectors/sqla/models.py index 033220158a701..d838c27d9177a 100644 --- a/superset/connectors/sqla/models.py +++ b/superset/connectors/sqla/models.py @@ -1655,26 +1655,26 @@ def before_update( ): raise Exception(get_dataset_exist_error_msg(target.full_name)) + @staticmethod + def update_table( + _mapper: Mapper, _connection: Connection, obj: Union[SqlMetric, TableColumn] + ) -> None: + """ + Forces an update to the table's changed_on value when a metric or column on the + table is updated. This busts the cache key for all charts that use the table. -def update_table( - _mapper: Mapper, _connection: Connection, obj: Union[SqlMetric, TableColumn] -) -> None: - """ - Forces an update to the table's changed_on value when a metric or column on the - table is updated. This busts the cache key for all charts that use the table. - - :param _mapper: Unused. - :param _connection: Unused. - :param obj: The metric or column that was updated. - """ - db.session.execute(update(SqlaTable).where(SqlaTable.id == obj.table.id)) + :param _mapper: Unused. + :param _connection: Unused. + :param obj: The metric or column that was updated. + """ + db.session.execute(update(SqlaTable).where(SqlaTable.id == obj.table.id)) sa.event.listen(SqlaTable, "after_insert", security_manager.set_perm) sa.event.listen(SqlaTable, "after_update", security_manager.set_perm) sa.event.listen(SqlaTable, "before_update", SqlaTable.before_update) -sa.event.listen(SqlMetric, "after_update", update_table) -sa.event.listen(TableColumn, "after_update", update_table) +sa.event.listen(SqlMetric, "after_update", SqlaTable.update_table) +sa.event.listen(TableColumn, "after_update", SqlaTable.update_table) RLSFilterRoles = Table( "rls_filter_roles",