Coming from Python recursively appending list function Trying to recursively get a list of permissions associated with a file structure.
I have this function:
def get_child_perms(self, folder, request, perm_list):
# Folder contains other folders
if folder.get_children():
# For every sub-folder
return [self.get_child_perms(subfolder, request, perm_list) for subfolder in folder.get_children()]
return folder.has_read_permission(request)
That returns all the results except the folders that contain other folders.
folder <- Missing (allowed)
subfolder <- Missing (restricted)
subsubfolder <- Get this (restricted)
files
Output from function would be [True, False, False]
another case would be, where A = allowed, R = restricted
folder A
subfolder A
subsubfolder R
files
files
subfolder R
files
subfolder A
subsubfolder A
files
files
subfolder A
files
files
Output would be [True,True,False,False,True,True,True]
The basic issue occurs you are only returning the folder permission , when folder does not have any children , when it has children, you are not including the folder.has_read_permission(request) in your return result , which is most probably causing you issue. You need to do -
def get_child_perms(self, folder, request, perm_list):
# Folder contains other folders
if folder.get_children():
# For every sub-folder
return [folder.has_read_permission(request)] + [self.get_child_perms(subfolder, request, perm_list) for subfolder in folder.get_children()]
return [folder.has_read_permission(request)]
This should result in (not tested) -
[folderperm [subfolderperm [subsubfolderperm]]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With