Resource permissions

Permissions can be set on resources, files are the main type of resource. Permissions can be set on individual resources, a list of resources, all resources in a folder, or all resources in a dataset.

Add permissions to a dataset

Recursively set permissions on all resources in a dataset.

from crux import Crux

conn = Crux()

dataset = conn.get_dataset(id="A_DATASET_ID")

added = dataset.add_permission(
    identity_id="_subscribed_",
    permission="Read"
)

if added:
    print("Permission applied")

Add permissions to a list of resources

Using resource paths:

from crux import Crux

conn = Crux()

dataset = conn.get_dataset(id="A_DATASET_ID"))

added = dataset.add_permission(
    identity_id="_subscribed_",
    permission="Read",
    resource_paths=[
        "/path/to/file/in/folder/file1.csv",
        "/path/to/another/file2.csv",
    ]
)

if added:
    print("Permission applied")

Using Resource/File objects:

from crux import Crux

conn = Crux()

dataset = conn.get_dataset(id="A_DATASET_ID")
file = dataset.get_file(path="/path/to/file/in/folder/file1.csv")
file2 = dataset.get_file(path="/path/to/another/file2.csv")

added = dataset.add_permission(
    identity_id="_subscribed_",
    permission="Read",
    resource_objects=[file, file2]
)

if added:
    print("Permission applied")

Using resource IDs:

from crux import Crux

conn = Crux()

dataset = conn.get_dataset(id="A_DATASET_ID")
file = dataset.get_file(path="/path/to/file/in/folder/file1.csv")
file2 = dataset.get_file(path="/path/to/another/file2.csv")

added = dataset.add_permission(
    identity_id="_subscribed_",
    permission="Read",
    resource_ids=[filet.id, file2.id]
)

if added:
    print("Permission applied")

Add permissions to folder recursively

Add permissions recursively to all resources in a folder, using a Folder object.

from crux import Crux

conn = Crux()

dataset = conn.get_dataset(id="A_DATASET_ID")
folder = dataset.get_folder(path="/some/folder")

added = folder.add_permission(
    identity_id="_subscribed_",
    permission="Read",
    recursive=True
)

if added:
    print("Permission recursively applied to the folder")

Apply permissions to single resource

Add permissions to a single resource, using a File object.

from crux import Crux

conn = Crux()

dataset = conn.get_dataset(id="A_DATASET_ID")
file = dataset.get_file(path="/path/to/file.csv")

permission = file.add_permission(
    identity_id="_subscribed_",
    permission="Read"
)

print(permission.target_id, permission.identity_id, permission.permission_name)

List resource permissions

List all permissions on a resource.

from crux import Crux

conn = Crux()

dataset = conn.get_dataset(id="A_DATASET_ID")
file = dataset.get_file(path="/path/to/file.csv")
permission_list = file.list_permissions()

for permission in permission_list:
    print(permission.target_id, permission.identity_id, permission.permission_name)