diff options
author | Paco Guzman <pacoguzmanp@gmail.com> | 2016-08-08 15:32:17 +0200 |
---|---|---|
committer | Paco Guzman <pacoguzmanp@gmail.com> | 2016-08-09 09:40:34 +0200 |
commit | 51f40a919a6686203ffc638a1c82e179811959cb (patch) | |
tree | 5a90bf43455b607c539f21729221de0002491603 /app/models/project_team.rb | |
parent | b6fe79f48b2fc3ab9d64cffb26b39abd30bcd396 (diff) | |
download | gitlab-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.rb | 16 |
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 |