Skip to content

Commit 83eff37

Browse files
authored
Sudo Role Fix (#290)
feat: add new role settings with test support Added new role settings to RoleSettings class: - allowFoldersFilesPermanentDelete: Control permanent file/folder deletion - canManageLegalHolds: Control legal hold management permissions - canManageComplianceSetting: Control compliance settings management Updated corresponding test cases to include the new settings.
1 parent bb85e5f commit 83eff37

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

cterasdk/core/roles.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,11 @@ def modify(self, role, settings):
4848
:returns: Updated role settings
4949
:rtype: cterasdk.core.types.RoleSettings
5050
"""
51+
name = role
5152
role = Roles.find(role)
5253
if role:
54+
if settings.sudo:
55+
settings = RoleSettings(name=name, **{attr: True for attr in settings.__dict__.keys() if attr != 'name'})
5356
logging.getLogger('cterasdk.core').info('Updating role settings. %s', {'role': role})
5457
response = self._core.api.put(f'/rolesSettings/{role}', settings.to_server_object())
5558
logging.getLogger('cterasdk.core').info('Role settings updated. %s', {'role': role})

cterasdk/core/types.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -750,11 +750,14 @@ class RoleSettings(Object): # pylint: disable=too-many-instance-attributes
750750
:ivar bool manage_cloud_drives: Manage Cloud Folders
751751
:ivar bool manage_plans: Manage Plans
752752
:ivar bool manage_logs: Manage Log Settings
753+
:ivar bool allow_folders_files_permanent_delete: Allow Folders Files Permanent Delete
754+
:ivar bool can_manage_legal_holds: Manage Legal Holds
755+
:ivar bool can_manage_compliance_settings: Manage Compliance Settings
753756
"""
754757
# pylint: disable=too-many-arguments, too-many-locals
755758
def __init__(self, name, sudo, enable_remote_wipe, enable_sso, enable_seeding_export, enable_seeding_import, access_end_user_folders,
756759
update_settings, update_roles, update_account_emails, update_account_password, manage_cloud_drives, manage_plans,
757-
manage_users, manage_logs):
760+
manage_users, manage_logs, allow_folders_files_permanent_delete, can_manage_legal_holds, can_manage_compliance_settings):
758761
self.name = name
759762
self.sudo = sudo
760763
self.enable_remote_wipe = enable_remote_wipe
@@ -770,6 +773,9 @@ def __init__(self, name, sudo, enable_remote_wipe, enable_sso, enable_seeding_ex
770773
self.manage_plans = manage_plans
771774
self.manage_users = manage_users
772775
self.manage_logs = manage_logs
776+
self.allow_folders_files_permanent_delete = allow_folders_files_permanent_delete
777+
self.can_manage_legal_holds = can_manage_legal_holds
778+
self.can_manage_compliance_settings = can_manage_compliance_settings
773779

774780
def to_server_object(self):
775781
param = Object()
@@ -789,6 +795,9 @@ def to_server_object(self):
789795
param.canManagePlans = self.manage_plans
790796
param.canManageUsers = self.manage_users
791797
param.canManageLogSettings = self.manage_logs
798+
param.allowFoldersFilesPermanentDelete = self.allow_folders_files_permanent_delete
799+
param.canManageLegalHolds = self.can_manage_legal_holds
800+
param.canManageComplianceSetting = self.can_manage_compliance_settings
792801
return param
793802

794803
@staticmethod
@@ -808,6 +817,9 @@ def from_server_object(server_object):
808817
'manage_cloud_drives': server_object.canManageAllFolders,
809818
'manage_plans': server_object.canManagePlans,
810819
'manage_users': server_object.canManageUsers,
811-
'manage_logs': server_object.canManageLogSettings
820+
'manage_logs': server_object.canManageLogSettings,
821+
'allow_folders_files_permanent_delete': server_object.allowFoldersFilesPermanentDelete,
822+
'can_manage_legal_holds': server_object.canManageLegalHolds,
823+
'can_manage_compliance_settings': server_object.canManageComplianceSetting
812824
}
813825
return RoleSettings(**params)

tests/ut/core/admin/test_roles.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,5 +59,8 @@ def _role_settings(name):
5959
'canManageAllFolders': True,
6060
'canManagePlans': True,
6161
'canManageUsers': True,
62-
'canManageLogSettings': False
62+
'canManageLogSettings': False,
63+
'allowFoldersFilesPermanentDelete': False,
64+
'canManageLegalHolds': False,
65+
'canManageComplianceSetting': False
6366
})

0 commit comments

Comments
 (0)