Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-06-17 15:17:32 +0400
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-06-18 18:47:52 +0400
commite940fbc7c1b322c15f5d5ae878fbd3117e9b98f9 (patch)
tree385370e2caea4e562a563613581cc64258e5b9e0 /app/models/project_team.rb
parentfa877b63126c84cb304228cf37b61d186d5e4477 (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.rb24
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