From 53990201bc97ad2035e10500eda0d4c935f3bfb1 Mon Sep 17 00:00:00 2001 From: Wyndham Blanton Date: Wed, 29 Mar 2017 09:47:26 -0700 Subject: [PATCH] forgotten query_datasources_by_name function (#2497) * forgotten query_datasources_by_name function * use normal formats --- superset/connectors/connector_registry.py | 7 +++++++ superset/connectors/druid/models.py | 10 ++++++++++ superset/connectors/sqla/models.py | 12 ++++++++++++ 3 files changed, 29 insertions(+) diff --git a/superset/connectors/connector_registry.py b/superset/connectors/connector_registry.py index c3662ef14e..9c58f48076 100644 --- a/superset/connectors/connector_registry.py +++ b/superset/connectors/connector_registry.py @@ -66,3 +66,10 @@ class ConnectorRegistry(object): .filter_by(id=datasource_id) .one() ) + + @classmethod + def query_datasources_by_name( + cls, session, database, datasource_name, schema=None): + datasource_class = ConnectorRegistry.sources[database.type] + return datasource_class.query_datasources_by_name( + session, database, datasource_name, schema=None) diff --git a/superset/connectors/druid/models.py b/superset/connectors/druid/models.py index 1a4c148a2e..cf14ad0746 100644 --- a/superset/connectors/druid/models.py +++ b/superset/connectors/druid/models.py @@ -1065,5 +1065,15 @@ class DruidDatasource(Model, BaseDatasource): filters = cond return filters + @classmethod + def query_datasources_by_name( + cls, session, database, datasource_name, schema=None): + return ( + session.query(cls) + .filter_by(cluster_name=database.id) + .filter_by(datasource_name=datasource_name) + .all() + ) + sa.event.listen(DruidDatasource, 'after_insert', set_perm) sa.event.listen(DruidDatasource, 'after_update', set_perm) diff --git a/superset/connectors/sqla/models.py b/superset/connectors/sqla/models.py index 1196b42bc2..6cc55d3f55 100644 --- a/superset/connectors/sqla/models.py +++ b/superset/connectors/sqla/models.py @@ -680,5 +680,17 @@ class SqlaTable(Model, BaseDatasource): db.session, i_datasource, lookup_database, lookup_sqlatable, import_time) + @classmethod + def query_datasources_by_name( + cls, session, database, datasource_name, schema=None): + query = ( + session.query(cls) + .filter_by(database_id=database.id) + .filter_by(table_name=datasource_name) + ) + if schema: + query = query.filter_by(schema=schema) + return query.all() + sa.event.listen(SqlaTable, 'after_insert', set_perm) sa.event.listen(SqlaTable, 'after_update', set_perm)