summaryrefslogtreecommitdiff
path: root/app/models/project_team.rb
diff options
context:
space:
mode:
authorPaco Guzman <pacoguzmanp@gmail.com>2016-08-08 15:32:17 +0200
committerPaco Guzman <pacoguzmanp@gmail.com>2016-08-09 09:40:34 +0200
commit51f40a919a6686203ffc638a1c82e179811959cb (patch)
tree5a90bf43455b607c539f21729221de0002491603 /app/models/project_team.rb
parentb6fe79f48b2fc3ab9d64cffb26b39abd30bcd396 (diff)
downloadgitlab-ce-51f40a919a6686203ffc638a1c82e179811959cb.tar.gz
user.can?(:admin_issue, project) improvement
This make sense when checking a bunch of projects
Diffstat (limited to 'app/models/project_team.rb')
-rw-r--r--app/models/project_team.rb16
1 files changed, 14 insertions, 2 deletions
diff --git a/app/models/project_team.rb b/app/models/project_team.rb
index d0a714cd6fc..2c630c1f626 100644
--- a/app/models/project_team.rb
+++ b/app/models/project_team.rb
@@ -5,6 +5,18 @@ class ProjectTeam
@project = project
end
+ class << self
+ def preload_max_member_access(project_teams)
+ projects = project_teams.map(&:project)
+ run_preload(projects, [:namespace, :group])
+ run_preload(projects.select(&:allowed_to_share_with_group?), [project_group_links: :group])
+ end
+
+ def run_preload(projects, associations)
+ ActiveRecord::Associations::Preloader.new.preload(projects, associations)
+ end
+ end
+
# Shortcut to add users
#
# Use:
@@ -162,7 +174,7 @@ class ProjectTeam
# Each group produces a list of maximum access level per user. We take the
# max of the values produced by each group.
- if project.invited_groups.any? && project.allowed_to_share_with_group?
+ if project.allowed_to_share_with_group?
project.project_group_links.each do |group_link|
invited_access = max_invited_level_for_users(group_link, user_ids)
merge_max!(access, invited_access)
@@ -201,7 +213,7 @@ class ProjectTeam
group_members = group ? group.members : []
invited_members = []
- if project.invited_groups.any? && project.allowed_to_share_with_group?
+ if project.allowed_to_share_with_group? && project.invited_groups.any?
project.project_group_links.includes(group: [:group_members]).each do |group_link|
invited_group = group_link.group
im = invited_group.members