fromconnectimportconnect_to_irodsfromirods.columnimportLikefromirods.accessimportiRODSAccessfromirods.modelsimport(Collection,CollectionAccess,CollectionUser,Group,User)fromirods.userimportiRODSUser,iRODSGroupimportpprintsession=connect_to_irods()defmodaccess(username,coll,new_access):try:result=[]x=session.collections.get(coll)session.acls.set(iRODSAccess(new_access,coll,username))print('Privileges modified.')result2=session.acls.get(x)result.append(result2)exceptirods.exception.CollectionDoesNotExist:print('Collection does not exist.')# Examplemodaccess('abcde001','/WCDSacc/courses/11032025/your_username/iris_data','read')...
Check who has what level of access to the datasets
...defcheckaccess(path,access):q2=session.query(User,CollectionAccess).filter(Collection.name==path,Like(CollectionAccess.name,f'{access}%'))print(f'The following users or groups have {access} access to collection {path}')foruserinq2:print(user[CollectionAccess.name])u=user[User.name]utype=user[User.type]ifutype=='rodsgroup':current_group=session.groups.get(u)grp_usr_mapping=[(iRODSGroup(session.groups,result),iRODSUser(session.users,result))forresultinsession.query(Group,User).filter(Group.name==current_group.name)]print('Group',current_group.name,' users: ')pprint.pprint(" ".join([y.nameforx,yingrp_usr_mappingifx.id!=y.id]))else:print(f'User: {u}')print('---')# Examplecheckaccess('/WCDSacc/courses/11032025/abcde001/iris_data','read')...
Check if you have access to the data of someone else in this course!
See the first example. By setting the new_access argument to 'null', all permissions will be revoked.
Extra exercise
Create a file in /WCDSacc/courses/11032025/public, and one in /WCDSacc/courses/11032025/your_username and see what the difference in authorisations is. Can you figure out why using ils?