|
a/Allura/allura/lib/security.py |
|
b/Allura/allura/lib/security.py |
|
... |
|
... |
191 |
while to_visit:
|
191 |
while to_visit:
|
192 |
(rid, role) = to_visit.pop()
|
192 |
(rid, role) = to_visit.pop()
|
193 |
if rid in visited: continue
|
193 |
if rid in visited: continue
|
194 |
yield role
|
194 |
yield role
|
195 |
pr_index = self.cred.project_roles(role.project_id).index
|
195 |
pr_index = self.cred.project_roles(role.project_id).index
|
|
|
196 |
if rid in pr_index:
|
196 |
for i in pr_index[rid].roles:
|
197 |
for i in pr_index[rid].roles:
|
197 |
if i in pr_index:
|
198 |
if i in pr_index:
|
198 |
to_visit.append((i, pr_index[i]))
|
199 |
to_visit.append((i, pr_index[i]))
|
199 |
return RoleCache(self.cred, _iter())
|
200 |
return RoleCache(self.cred, _iter())
|
200 |
|
201 |
|
201 |
@LazyProperty
|
202 |
@LazyProperty
|
202 |
def reaching_ids(self):
|
203 |
def reaching_ids(self):
|
203 |
return [ r._id for r in self.reaching_roles ]
|
204 |
return [ r._id for r in self.reaching_roles ]
|