|
a/Allura/allura/lib/security.py |
|
b/Allura/allura/lib/security.py |
|
... |
|
... |
70 |
# Don't reload roles
|
70 |
# Don't reload roles
|
71 |
project_ids = [ pid for pid in project_ids if self.users.get((user_id, pid)) is None ]
|
71 |
project_ids = [ pid for pid in project_ids if self.users.get((user_id, pid)) is None ]
|
72 |
if not project_ids: return
|
72 |
if not project_ids: return
|
73 |
if user_id is None:
|
73 |
if user_id is None:
|
74 |
q = self.project_role.find({
|
74 |
q = self.project_role.find({
|
|
|
75 |
'user_id': None,
|
75 |
'project_id': {'$in': project_ids},
|
76 |
'project_id': {'$in': project_ids},
|
76 |
'name': '*anonymous'})
|
77 |
'name': '*anonymous'})
|
77 |
else:
|
78 |
else:
|
78 |
q0 = self.project_role.find({
|
79 |
q0 = self.project_role.find({
|
|
|
80 |
'user_id': None,
|
79 |
'project_id': {'$in': project_ids},
|
81 |
'project_id': {'$in': project_ids},
|
80 |
'name': {'$in': ['*anonymous', '*authenticated']}})
|
82 |
'name': {'$in': ['*anonymous', '*authenticated']}})
|
81 |
q1 = self.project_role.find({
|
83 |
q1 = self.project_role.find({
|
|
|
84 |
'user_id': user_id,
|
82 |
'project_id': {'$in': project_ids},
|
85 |
'project_id': {'$in': project_ids},
|
83 |
'user_id': user_id})
|
86 |
'name': None})
|
84 |
q = chain(q0, q1)
|
87 |
q = chain(q0, q1)
|
85 |
roles_by_project = dict((pid, []) for pid in project_ids)
|
88 |
roles_by_project = dict((pid, []) for pid in project_ids)
|
86 |
for role in q:
|
89 |
for role in q:
|
87 |
roles_by_project[role['project_id']].append(role)
|
90 |
roles_by_project[role['project_id']].append(role)
|
88 |
for pid, roles in roles_by_project.iteritems():
|
91 |
for pid, roles in roles_by_project.iteritems():
|