[#2242] Add method to retrieve project users by role name
diff --git a/Allura/allura/model/project.py b/Allura/allura/model/project.py
index fc7eb00..b5c1567 100644
--- a/Allura/allura/model/project.py
+++ b/Allura/allura/model/project.py
@@ -599,6 +599,16 @@
g.credentials.project_roles(project_id=self.root_project._id).named)
return [ r.user for r in named_roles.roles_that_reach if r.user_id is not None ]
+ def users_with_role(self, *role_names):
+ """Return all users in this project that have at least one of the roles
+ specified.
+
+ e.g., project.users_with_role('Admin', 'Developer') -> returns all
+ users in `project` having the Admin role or the Developer role, or both
+ """
+ roles = ProjectRole.query.find(dict(name={'$in': role_names}, project_id=self._id))
+ return [project_role.user for r in roles for project_role in r.users_with_role(self)]
+
def admins(self):
"""Find all the users who have 'Admin' role for this project"""
admin_role = ProjectRole.query.get(name='Admin', project_id=self._id)