Script to modify project settings

Srkanoje
Level 3
Script to modify project settings

Hi All,

I have created a script to modify the project seeting, and have scheduled it as a scenario to run daily but the list keeps on getting append by the same group name on daily basis. can you please suggest how to break this. -- please find the image attached for reference.

below is the script which i am using --- 
import dataiku
client = dataiku.api_client()
for project_key in PROJECT_KEYS:
project = client.get_project(project_key)
project_permissions = project.get_permissions()
project_permissions['permissions'].append({'group':'Test1','admin': True})
project_permissions['permissions'].append({'group':'Test2','readProjectContent': True})
project_permissions['permissions'].append({'group':'Test3','readProjectContent': True})
project.set_permissions(project_permissions)


Operating system used: linux


Operating system used: linux

0 Kudos
4 Replies
AlexT
Dataiker

Hi @Srkanoje ,

The API call will not check if the values already exist you will need to do this yourself something like this:

import dataiku

client = dataiku.api_client()
for project_key in PROJECT_KEYS:
    project = client.get_project(project_key)
    project_permissions = project.get_permissions()
    
    # Define permissions to add
    permissions_to_add = [
        {'group': 'Test1', 'admin': True},
        {'group': 'Test2', 'readProjectContent': True},
        {'group': 'Test3', 'readProjectContent': True}
    ]
    
    # Check if permissions already exist, if not append
    for permission in permissions_to_add:
        if permission not in project_permissions['permissions']:
            project_permissions['permissions'].append(permission)
    
    project.set_permissions(project_permissions)

 

0 Kudos
Srkanoje
Level 3
Author

@AlexT thank you for helping this works 

0 Kudos
Srkanoje
Level 3
Author

@AlexT is there a way to delete the same permission 

0 Kudos
AlexT
Dataiker

yes, you can same approach to delete a list of permissions: 

import dataiku

client = dataiku.api_client()
for project_key in PROJECT_KEYS:
    project = client.get_project(project_key)
    project_permissions = project.get_permissions()
    
    # Define permissions to delete
    permissions_to_delete = [
        {'group': 'Test1', 'admin': True},
        {'group': 'Test2', 'readProjectContent': True},
        {'group': 'Test3', 'readProjectContent': True}
    ]
    
    # Check if permissions exist, if yes, remove them
    updated_permissions = []
    for permission in project_permissions['permissions']:
        if permission not in permissions_to_delete:
            updated_permissions.append(permission)
    
    project_permissions['permissions'] = updated_permissions
    
    project.set_permissions(project_permissions)

 

0 Kudos

Labels

?
Labels (1)

Setup info

?
A banner prompting to get Dataiku