You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by jo...@apache.org on 2023/10/31 15:23:49 UTC
(superset) branch master updated: chore(security): Make get_database_perm/get_dataset_perm return optional (#24046)
This is an automated email from the ASF dual-hosted git repository.
johnbodley pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new 7804d1451e chore(security): Make get_database_perm/get_dataset_perm return optional (#24046)
7804d1451e is described below
commit 7804d1451e88a20ce512db6a5a89a4cf4c6ddd90
Author: John Bodley <45...@users.noreply.github.com>
AuthorDate: Tue Oct 31 08:23:42 2023 -0700
chore(security): Make get_database_perm/get_dataset_perm return optional (#24046)
---
superset/security/manager.py | 30 +++++++++++++++++++++---------
1 file changed, 21 insertions(+), 9 deletions(-)
diff --git a/superset/security/manager.py b/superset/security/manager.py
index 2225a0fa3a..c8d2c236ab 100644
--- a/superset/security/manager.py
+++ b/superset/security/manager.py
@@ -298,11 +298,15 @@ class SupersetSecurityManager( # pylint: disable=too-many-public-methods
return f"[{database}].[{schema}]" if schema else None
@staticmethod
- def get_database_perm(database_id: int, database_name: str) -> str:
+ def get_database_perm(database_id: int, database_name: str) -> Optional[str]:
return f"[{database_name}].(id:{database_id})"
@staticmethod
- def get_dataset_perm(dataset_id: int, dataset_name: str, database_name: str) -> str:
+ def get_dataset_perm(
+ dataset_id: int,
+ dataset_name: str,
+ database_name: str,
+ ) -> Optional[str]:
return f"[{database_name}].[{dataset_name}](id:{dataset_id})"
def unpack_database_and_schema(self, schema_permission: str) -> DatabaseAndSchema:
@@ -1168,6 +1172,8 @@ class SupersetSecurityManager( # pylint: disable=too-many-public-methods
.where(view_menu_table.c.id == db_pvm.view_menu_id)
.values(name=new_view_menu_name)
)
+ if not new_view_menu_name:
+ return None
new_db_view_menu = self._find_view_menu_on_sqla_event(
connection, new_view_menu_name
)
@@ -1223,10 +1229,6 @@ class SupersetSecurityManager( # pylint: disable=too-many-public-methods
.where(view_menu_table.c.name == old_dataset_vm_name)
.values(name=new_dataset_vm_name)
)
- # After update refresh
- new_dataset_view_menu = self._find_view_menu_on_sqla_event(
- connection, new_dataset_vm_name
- )
# Update dataset (SqlaTable perm field)
connection.execute(
@@ -1243,8 +1245,18 @@ class SupersetSecurityManager( # pylint: disable=too-many-public-methods
.where(chart_table.c.perm == old_dataset_vm_name)
.values(perm=new_dataset_vm_name)
)
- self.on_view_menu_after_update(mapper, connection, new_dataset_view_menu)
- updated_view_menus.append(new_dataset_view_menu)
+ if new_dataset_vm_name:
+ # After update refresh
+ new_dataset_view_menu = self._find_view_menu_on_sqla_event(
+ connection,
+ new_dataset_vm_name,
+ )
+ self.on_view_menu_after_update(
+ mapper,
+ connection,
+ new_dataset_view_menu,
+ )
+ updated_view_menus.append(new_dataset_view_menu)
return updated_view_menus
def dataset_after_insert(
@@ -1270,7 +1282,7 @@ class SupersetSecurityManager( # pylint: disable=too-many-public-methods
)
try:
- dataset_perm = target.get_perm()
+ dataset_perm: Optional[str] = target.get_perm()
database = target.database
except DatasetInvalidPermissionEvaluationException:
logger.warning(