A veces nos encontramos con la nesidad de analizar detalladamente todos los permisos establecidos en cada objeto
Para facilitarlo podemos ejecutar este script por zopectl debug, y obtener un archivo en formato csv con todos los perfiles por objeto:
site = app.kmkey
from AccessControl.SecurityManagement import newSecurityManager
from Testing.makerequest import makerequest
user = site.acl_users.getUser('manager').__of__(site.acl_users)
newSecurityManager({}, user)
app = makerequest(app)
site = app.kmkey
from Acquisition import aq_base, aq_acquire
context = site.workspaces.kmkey
cat = site.portal_catalog
km = site.workspaces.kmkey
db=site.db
catalog = km.portal_catalog
#Filtrar los objetos que nos interese
brains = cat(path='/kmkey/workspaces/kmkey/etccc...', meta_type='KM Task',sort_on='relative_path')
len(brains)
obs=[]
i=0
for brain in brains:
i=i+1
obs.append(brain.getObject())
if not i%10:
i
site._p_jar.sync()
site._p_jar.cacheGC()
f=open('/tmp/informe.csv','w')
for ob in obs:
dm = ob.getContent().getDataModel()
txt =""""%s";"%s";"%s";"""%(len(ob.getPhysicalPath()),dm['Title'],dm['wbs'])
roles = ob.get_local_roles()
#Adaptar para incluir los permisos por grupo
#groles = ob.get_local_group_roles()
for item in roles:
txt = txt + """"%s";"%s";"""%(item[0],' / '.join(item[1]))
print txt
f.write(txt+'\n')
f.close()