Skip to content

Commit 6487f8e

Browse files
committed
Allow dataset owners to see their datasets
1 parent e2f11d3 commit 6487f8e

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

superset/views/base.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -620,10 +620,19 @@ def apply(self, query: Query, value: Any) -> Query:
620620
return query
621621
datasource_perms = security_manager.user_view_menu_names("datasource_access")
622622
schema_perms = security_manager.user_view_menu_names("schema_access")
623+
owner_ids_query = (
624+
db.session.query(models.SqlaTable.id)
625+
.join(models.SqlaTable.owners)
626+
.filter(
627+
security_manager.user_model.id
628+
== security_manager.user_model.get_user_id()
629+
)
630+
)
623631
return query.filter(
624632
or_(
625633
self.model.perm.in_(datasource_perms),
626634
self.model.schema_perm.in_(schema_perms),
635+
models.SqlaTable.id.in_(owner_ids_query),
627636
)
628637
)
629638

tests/integration_tests/datasets/api_tests.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,27 @@ def test_get_dataset_list_gamma(self):
213213
response = json.loads(rv.data.decode("utf-8"))
214214
assert response["result"] == []
215215

216+
def test_get_dataset_list_gamma_owned(self):
217+
"""
218+
Dataset API: Test get dataset list owned by gamma
219+
"""
220+
main_db = get_main_database()
221+
owned_dataset = self.insert_dataset(
222+
"ab_user", [self.get_user("gamma").id], main_db
223+
)
224+
225+
self.login(username="gamma")
226+
uri = "api/v1/dataset/"
227+
rv = self.get_assert_metric(uri, "get_list")
228+
assert rv.status_code == 200
229+
response = json.loads(rv.data.decode("utf-8"))
230+
231+
assert response["count"] == 1
232+
assert response["result"][0]["table_name"] == "ab_user"
233+
234+
db.session.delete(owned_dataset)
235+
db.session.commit()
236+
216237
def test_get_dataset_related_database_gamma(self):
217238
"""
218239
Dataset API: Test get dataset related databases gamma

0 commit comments

Comments
 (0)