def get_local_roles(userid, request=None, context=None, get_cfg_storage=config.get_cfg_storage): """ calculates local roles for userid """ if context is None: context = getattr(request, 'context', None) if context is None: context = getattr(request, 'root', None) roles = OrderedDict() if IOwnersAware.providedBy(context): if userid == context.__owner__: roles[Owner.id] = Allow for location in lineage(context): if ILocalRolesAware.providedBy(location): local_roles = location.__local_roles__ if local_roles: for r in local_roles.get(userid, ()): if r not in roles: roles[r] = Allow data = [] for r, val in roles.items(): if val is Allow: data.append(r) registry = get_current_registry() for provider in get_cfg_storage(ID_ROLES_PROVIDER, registry).values(): data.extend(provider(context, userid, registry)) return data
def get_local_roles(userid, request=None, context=None): """ calculates local roles for userid """ if context is None: context = getattr(request, "context", None) if context is None: context = getattr(request, "root", None) roles = OrderedDict() if IOwnersAware.providedBy(context): if userid == context.__owner__: roles[Owner.id] = Allow for location in lineage(context): if ILocalRolesAware.providedBy(location): local_roles = location.__local_roles__ if local_roles: for r in local_roles.get(userid, ()): if r not in roles: roles[r] = Allow data = [] for r, val in roles.items(): if val is Allow: data.append(r) return data
def get_local_roles(userid, request=None, context=None): """ calculates local roles for userid """ if context is None: context = getattr(request, 'context', None) if context is None: context = getattr(request, 'root', None) roles = OrderedDict() if IOwnersAware.providedBy(context): if userid == context.__owner__: roles[Owner.id] = Allow for location in lineage(context): if ILocalRolesAware.providedBy(location): local_roles = location.__local_roles__ if local_roles: for r in local_roles.get(userid, ()): if r not in roles: roles[r] = Allow data = [] for r, val in roles.items(): if val is Allow: data.append(r) return data
def get_local_roles(userid, request=None, context=None, get_cfg_storage=config.get_cfg_storage): """ calculates local roles for userid """ if context is None: context = getattr(request, 'context', None) if context is None: context = getattr(request, 'root', None) roles = OrderedDict() if IOwnersAware.providedBy(context): if userid == context.__owner__: roles[Owner.id] = Allow for location in lineage(context): if ILocalRolesAware.providedBy(location): local_roles = location.__local_roles__ if local_roles: user_props = getattr(ptah.resolve(userid), 'properties', dict()) user_roles = [] for r in local_roles.get(userid, ()): if r not in user_roles: user_roles.append(r) for grp in user_props.get('groups', ()): for r in local_roles.get(grp, ()): if r not in roles: user_roles.append(r) for r in user_roles: if r not in roles: roles[r] = Allow data = [] for r, val in roles.items(): if val is Allow: data.append(r) registry = get_current_registry() for provider in get_cfg_storage(ID_ROLES_PROVIDER, registry).values(): data.extend(provider(context, userid, registry)) return data