diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-06-17 15:17:32 +0400 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-06-18 18:47:52 +0400 |
commit | e940fbc7c1b322c15f5d5ae878fbd3117e9b98f9 (patch) | |
tree | 385370e2caea4e562a563613581cc64258e5b9e0 /app/models/project_team.rb | |
parent | fa877b63126c84cb304228cf37b61d186d5e4477 (diff) |
Add UsersGroup relation to be respected by abilities and Project#team
Diffstat (limited to 'app/models/project_team.rb')
-rw-r--r-- | app/models/project_team.rb | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/app/models/project_team.rb b/app/models/project_team.rb index f3e5c0e5354..d84d46431f5 100644 --- a/app/models/project_team.rb +++ b/app/models/project_team.rb @@ -47,23 +47,23 @@ class ProjectTeam end def members - project.users_projects + fetch_members end def guests - members.guests.map(&:user) + @guests ||= fetch_members(:guests) end def reporters - members.reporters.map(&:user) + @reporters ||= fetch_members(:reporters) end def developers - members.developers.map(&:user) + @developers ||= fetch_members(:developers) end def masters - members.masters.map(&:user) + @masters ||= fetch_members(:masters) end def import(source_project) @@ -96,4 +96,18 @@ class ProjectTeam rescue false end + + private + + def fetch_members(level = nil) + project_members = project.users_projects + group_members = project.group.users_groups + + if level + project_members = project_members.send(level) + group_members = group_members.send(level) + end + + (project_members + group_members).map(&:user).uniq + end end |