Switch to unified view

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():