Esempio n. 1
0
    def cached_principal_roles(self, parent, principal):
        cache = self.cache(parent)
        try:
            cache_principal_roles = cache.principal_roles
        except AttributeError:
            cache_principal_roles = cache.principal_roles = {}
        try:
            return cache_principal_roles[principal]
        except KeyError:
            pass

        if parent is None:
            roles = dict(
                [(role, SettingAsBoolean[setting])
                 for (role, setting) in globalRolesForPrincipal(principal)])
            roles['zope.Anonymous'] = True  # Everybody has Anonymous
            cache_principal_roles[principal] = roles
            return roles

        roles = self.cached_principal_roles(
            removeSecurityProxy(getattr(parent, '__parent__', None)),
            principal)

        prinrole = IPrincipalRoleMap(parent, None)
        if prinrole:
            roles = roles.copy()
            for role, setting in prinrole.getRolesForPrincipal(principal):
                roles[role] = SettingAsBoolean[setting]

        cache_principal_roles[principal] = roles
        return roles
Esempio n. 2
0
    def cached_principal_roles(self, parent, principal):
        # Redefine it to get global roles
        cache = self.cache(parent)
        try:
            cache_principal_roles = cache.principal_roles
        except AttributeError:
            cache_principal_roles = cache.principal_roles = {}
        try:
            return cache_principal_roles[principal]
        except KeyError:
            pass

        if parent is None:
            roles = dict(
                [(role, SettingAsBoolean[setting])
                 for (role, setting) in globalRolesForPrincipal(principal)])
            roles['plone.Anonymous'] = True  # Everybody has Anonymous
            cache_principal_roles[principal] = roles
            return roles

        roles = self.cached_principal_roles(
            removeSecurityProxy(getattr(parent, '__parent__', None)),
            principal)

        prinrole = IPrincipalRoleMap(parent, None)

        if prinrole:
            roles = roles.copy()
            for role, setting in prinrole.getRolesForPrincipal(
                    principal,
                    self.request):
                roles[role] = SettingAsBoolean[setting]

        cache_principal_roles[principal] = roles
        return roles
Esempio n. 3
0
    def cached_principal_roles(self, parent, principal):
        cache = self.cache(parent)
        try:
            cache_principal_roles = cache.principal_roles
        except AttributeError:
            cache_principal_roles = cache.principal_roles = {}
        try:
            return cache_principal_roles[principal]
        except KeyError:
            pass

        if parent is None:
            roles = dict([
                (role, zopepolicy.SettingAsBoolean[setting])
                for (role,
                     setting) in zopepolicy.globalRolesForPrincipal(principal)
            ])
            roles['zope.Anonymous'] = True  # Everybody has Anonymous
            cache_principal_roles[principal] = roles
            return roles

        roles = self.cached_principal_roles(
            removeSecurityProxy(getattr(parent, '__parent__', None)),
            principal)

        prinrole = IPrincipalRoleMap(parent, None)
        if prinrole:
            roles = roles.copy()
            for role, setting in prinrole.getRolesForPrincipal(principal):
                roles[role] = zopepolicy.SettingAsBoolean[setting]
        # The lines below include the group that a document has been assigned
        # to into the lookup hierarchy.
        group_assignments = getattr(parent, "sa_group_assignments", [])
        for group_assignment in group_assignments:
            group = group_assignment.principal
            #!+GROUP_ASSIGNMENT.GROUP assert isinstance(group, domain.Group), group
            assigned_group_prinrole = IPrincipalRoleMap(group, None)
            if assigned_group_prinrole:
                roles = roles.copy()
                role_settings = assigned_group_prinrole.getRolesForPrincipal(
                    principal)
                for role, setting in role_settings:
                    roles[role] = zopepolicy.SettingAsBoolean[setting]
        cache_principal_roles[principal] = roles
        return roles
Esempio n. 4
0
 def cached_principal_roles(self, parent, principal):
     cache = self.cache(parent)
     try:
         cache_principal_roles = cache.principal_roles
     except AttributeError:
         cache_principal_roles = cache.principal_roles = {}
     try:
         return cache_principal_roles[principal]
     except KeyError:
         pass
     
     if parent is None:
         roles = dict(
             [(role, zopepolicy.SettingAsBoolean[setting])
              for (role, setting) in
              zopepolicy.globalRolesForPrincipal(principal)])
         roles['zope.Anonymous'] = True  # Everybody has Anonymous
         cache_principal_roles[principal] = roles
         return roles
     
     roles = self.cached_principal_roles(
         removeSecurityProxy(getattr(parent, '__parent__', None)),
         principal)
     
     prinrole = IPrincipalRoleMap(parent, None)
     if prinrole:
         roles = roles.copy()
         for role, setting in prinrole.getRolesForPrincipal(principal):
             roles[role] = zopepolicy.SettingAsBoolean[setting]
     # The lines below include the group that a document has been assigned
     # to into the lookup hierarchy.
     group_assignments = getattr(parent, "sa_group_assignments", [])
     for group_assignment in group_assignments:
         group = group_assignment.principal
         #!+GROUP_ASSIGNMENT.GROUP assert isinstance(group, domain.Group), group
         assigned_group_prinrole = IPrincipalRoleMap(group, None)
         if assigned_group_prinrole:
             roles = roles.copy()
             role_settings = assigned_group_prinrole.getRolesForPrincipal(
                 principal)
             for role, setting in role_settings:
                 roles[role] = zopepolicy.SettingAsBoolean[setting]
     cache_principal_roles[principal] = roles
     return roles
Esempio n. 5
0
 def getAllRoles(self):
     hfr = IPrincipalRoleMap(self.homefolder)
     masteruser = False
     ret = []
     for rolesetting in hfr.getRolesForPrincipal(self.principal.id):
         role, setting = rolesetting
         if 'uvc.Editor' == role and setting is Allow:
             masteruser = True
             ret.append('ENMS')
     for name, productfolder in self.homefolder.items():
         if not name.startswith('__'):
             if masteruser:
                 ret.append(name)
             else:
                 prm = IPrincipalRoleMap(productfolder)
                 for rolesetting in prm.getRolesForPrincipal(self.principal.id):
                     role, setting = rolesetting
                     if 'uvc.Editor' == role and setting is Allow:
                         ret.append(name)
     return ret
Esempio n. 6
0
    def getAllRoles(self):
        ret = []
        hfr = IPrincipalRoleMap(self.homefolder, None)
        if hfr is None:
            return ret

        masteruser = False
        for rolesetting in hfr.getRolesForPrincipal(self.principal.id):
            role, setting = rolesetting
            if 'uvc.Editor' == role and setting is Allow:
                masteruser = True
                ret.append('ENMS')
        for name, productfolder in self.homefolder.items():
            if not name.startswith('__'):
                if masteruser:
                    ret.append(name)
                else:
                    prm = IPrincipalRoleMap(productfolder)
                    for rolesetting in prm.getRolesForPrincipal(
                            self.principal.id):
                        role, setting = rolesetting
                        if 'uvc.Editor' == role and setting is Allow:
                            ret.append(name)
        return ret
    def cached_principal_roles(self, parent, principal):
        cache = self.cache(parent)
        try:
            cache_principal_roles = cache.principal_roles
        except AttributeError:
            cache_principal_roles = cache.principal_roles = {}
        try:
            return cache_principal_roles[principal]
        except KeyError:
            pass

        if parent is None:
            roles = dict([(role, SettingAsBoolean[setting])
                          for (role,
                               setting) in globalRolesForPrincipal(principal)])
            roles['zope.Anonymous'] = True  # Everybody has Anonymous
            cache_principal_roles[principal] = roles
            return roles

        if getattr(parent, 'inherit_permissions', False):
            roles = self.cached_principal_roles(
                removeSecurityProxy(getattr(parent, '__parent__', None)),
                principal)
        else:
            roles = dict([(role, SettingAsBoolean[setting])
                          for (role,
                               setting) in globalRolesForPrincipal(principal)])
            roles['zope.Anonymous'] = True  # Everybody has Anonymous

        prinrole = IPrincipalRoleMap(parent, None)
        if prinrole:
            for role, setting in prinrole.getRolesForPrincipal(principal):
                roles[role] = SettingAsBoolean[setting]

        cache_principal_roles[principal] = roles
        return roles
Esempio n. 8
0
 def roles(self):
     prmap = IPrincipalRoleMap(self.context)
     return [ids for ids, setting in prmap.getRolesForPrincipal(self.principal_id)]
Esempio n. 9
0
 def roles(self):
     prmap = IPrincipalRoleMap(self.context)
     return [
         ids
         for ids, setting in prmap.getRolesForPrincipal(self.principal_id)
     ]