def setPermissionRoles(self): """Set permissions of roles. """ prm = IRolePermissionManager(self.context) permissions = [perm.id for perm in self.permissions] for perm in permissions: rperm = self.request.get(u'perm%s' % perm) if rperm not in permissions: continue for role in self.roles: rrole = self.request.get('role%s' % role) if rrole not in self.roles: continue setting = self.request.get(u'prole%s%s' % (perm, role)) if setting is None: continue if setting == Unset.getName(): prm.unsetPermissionFromRole(rperm, rrole) elif setting == Allow.getName(): prm.grantPermissionToRole(rperm, rrole) elif setting == Deny.getName(): prm.denyPermissionToRole(rperm, rrole) else: # Unknown value. Ignore it. pass self.msg = u"Permissions successfully updated."
def setQreatureFolderUtilities(event): """ This is a handler for custom event. All object hierarchies and site-level utilities are created here""" site = event.object sm = site.getSiteManager() internal_principal = InternalPrincipal(site.login, site.password, u'owner') quiz_site = site.__parent__ quiz_site_manager = quiz_site.getSiteManager() quiz_site_pau = quiz_site_manager['pau'] quiz_site_pf = quiz_site_pau['PrincipalFolder'] quiz_site_pf.__setitem__(site.__name__, internal_principal) role = LocalRole(u'Quiz Creator',u'Registerde user, able to create and edit quizes') sm['role'] = role sm.registerUtility(role, IRole, site.__name__) role_perm_manager = IRolePermissionManager(site) role_perm_manager.grantPermissionToRole("qreature.edit_quiz", site.__name__)