diff --git a/superset/views/core.py b/superset/views/core.py index 0cf9dc055f9..f765794486a 100755 --- a/superset/views/core.py +++ b/superset/views/core.py @@ -2293,7 +2293,7 @@ class Superset(BaseSupersetView): table_name = data.get("datasourceName") table = db.session.query(SqlaTable).filter_by(table_name=table_name).first() if not table: - table = SqlaTable(table_name=table_name) + table = SqlaTable(table_name=table_name, owners=[g.user]) table.database_id = data.get("dbId") table.schema = data.get("schema") table.template_params = data.get("templateParams") diff --git a/tests/sqllab_tests.py b/tests/sqllab_tests.py index 806f6018a99..dde381742f4 100644 --- a/tests/sqllab_tests.py +++ b/tests/sqllab_tests.py @@ -21,6 +21,7 @@ from datetime import datetime, timedelta import prison from superset import db, security_manager +from superset.connectors.sqla.models import SqlaTable from superset.dataframe import SupersetDataFrame from superset.db_engine_specs import BaseEngineSpec from superset.models.sql_lab import Query @@ -289,6 +290,7 @@ class SqlLabTests(SupersetTestCase): self.assertEqual(len(cols), len(cdf.columns)) def test_sqllab_viz(self): + self.login("admin") examples_dbid = get_example_database().id payload = { "chartType": "dist_bar", @@ -319,6 +321,11 @@ class SqlLabTests(SupersetTestCase): resp = self.get_json_resp("/superset/sqllab_viz/", data=data) self.assertIn("table_id", resp) + # ensure owner is set correctly + table_id = resp["table_id"] + table = db.session.query(SqlaTable).filter_by(id=table_id).one() + self.assertEqual([owner.username for owner in table.owners], ["admin"]) + def test_sql_limit(self): self.login("admin") test_limit = 1