feat: introduce Subject model and entity editors/viewers (#38831)

This commit is contained in:
Ville Brofeldt
2026-07-08 11:00:03 -07:00
committed by GitHub
parent 01e872c105
commit 33f0fc93ed
477 changed files with 28196 additions and 19016 deletions
@@ -63,19 +63,15 @@ def test_duplicate_dataset_forbidden_when_no_access() -> None:
"superset.commands.dataset.duplicate.security_manager.raise_for_access",
side_effect=_security_exception(),
):
with patch(
"superset.commands.dataset.duplicate.DuplicateDatasetCommand.populate_owners",
return_value=[],
):
command = DuplicateDatasetCommand(
{
"base_model_id": 1,
"table_name": "duplicate_name",
"is_managed_externally": False,
}
)
with pytest.raises(DatasetAccessDeniedError):
command.validate()
command = DuplicateDatasetCommand(
{
"base_model_id": 1,
"table_name": "duplicate_name",
"is_managed_externally": False,
}
)
with pytest.raises(DatasetAccessDeniedError):
command.validate()
def test_duplicate_dataset_access_check_passes_through() -> None:
@@ -97,7 +93,7 @@ def test_duplicate_dataset_access_check_passes_through() -> None:
return_value=True,
):
with patch(
"superset.commands.dataset.duplicate.DuplicateDatasetCommand.populate_owners",
"superset.commands.utils.populate_subject_list",
return_value=[],
):
command = DuplicateDatasetCommand(
@@ -156,8 +152,7 @@ def test_duplicate_dataset_blocked_by_soft_deleted_twin(session: Session) -> Non
),
patch("superset.commands.dataset.duplicate.security_manager.raise_for_access"),
patch(
"superset.commands.dataset.duplicate."
"DuplicateDatasetCommand.populate_owners",
"superset.commands.utils.populate_subject_list",
return_value=[],
),
):
@@ -212,7 +207,7 @@ def test_duplicate_dataset_success() -> None:
return_value=True,
):
with patch(
"superset.commands.dataset.duplicate.DuplicateDatasetCommand.populate_owners",
"superset.commands.utils.populate_subject_list",
return_value=[],
):
with patch("superset.commands.dataset.duplicate.db.session.add"):
@@ -220,7 +215,7 @@ def test_duplicate_dataset_success() -> None:
{
"base_model_id": 1,
"table_name": "duplicated_dataset",
"owners": [],
"editors": [],
}
)
@@ -242,14 +237,14 @@ def test_duplicate_dataset_not_found() -> None:
return_value=None,
):
with patch(
"superset.commands.dataset.duplicate.DuplicateDatasetCommand.populate_owners",
"superset.commands.utils.populate_subject_list",
return_value=[],
):
command = DuplicateDatasetCommand(
{
"base_model_id": 999,
"table_name": "duplicated_dataset",
"owners": [],
"editors": [],
}
)
@@ -282,14 +277,14 @@ def test_duplicate_dataset_not_virtual() -> None:
return_value=True,
):
with patch(
"superset.commands.dataset.duplicate.DuplicateDatasetCommand.populate_owners",
"superset.commands.utils.populate_subject_list",
return_value=[],
):
command = DuplicateDatasetCommand(
{
"base_model_id": 1,
"table_name": "duplicated_dataset",
"owners": [],
"editors": [],
}
)
@@ -324,14 +319,14 @@ def test_duplicate_dataset_name_exists_same_database_schema() -> None:
return_value=False, # Name already exists
):
with patch(
"superset.commands.dataset.duplicate.DuplicateDatasetCommand.populate_owners",
"superset.commands.utils.populate_subject_list",
return_value=[],
):
command = DuplicateDatasetCommand(
{
"base_model_id": 1,
"table_name": "existing_dataset",
"owners": [],
"editors": [],
}
)
@@ -383,7 +378,7 @@ def test_duplicate_dataset_catalog_preserved() -> None:
return_value=True,
):
with patch(
"superset.commands.dataset.duplicate.DuplicateDatasetCommand.populate_owners",
"superset.commands.utils.populate_subject_list",
return_value=[],
):
with patch("superset.commands.dataset.duplicate.db.session.add"):
@@ -391,7 +386,7 @@ def test_duplicate_dataset_catalog_preserved() -> None:
{
"base_model_id": 1,
"table_name": "duplicated_dataset",
"owners": [],
"editors": [],
}
)
@@ -429,14 +424,14 @@ def test_duplicate_dataset_catalog_passed_to_uniqueness_check() -> None:
return_value=True,
) as mock_validate:
with patch(
"superset.commands.dataset.duplicate.DuplicateDatasetCommand.populate_owners",
"superset.commands.utils.populate_subject_list",
return_value=[],
):
command = DuplicateDatasetCommand(
{
"base_model_id": 1,
"table_name": "duplicated_dataset",
"owners": [],
"editors": [],
}
)
@@ -506,7 +501,7 @@ def test_duplicate_dataset_with_columns_and_metrics() -> None:
return_value=True,
):
with patch(
"superset.commands.dataset.duplicate.DuplicateDatasetCommand.populate_owners",
"superset.commands.utils.populate_subject_list",
return_value=[],
):
with patch("superset.commands.dataset.duplicate.db.session.add"):
@@ -514,7 +509,7 @@ def test_duplicate_dataset_with_columns_and_metrics() -> None:
{
"base_model_id": 1,
"table_name": "duplicated_dataset",
"owners": [],
"editors": [],
}
)