summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Hughes <me@iamphill.com>2016-12-02 16:48:34 +0000
committerPhil Hughes <me@iamphill.com>2016-12-02 16:50:08 +0000
commitcc66ec2b73d6fa581f5300957597615ed1b58c55 (patch)
tree39dfc83febf58e6d7bb1388925a96145fcaf55ce
parent89c22ed5af490f250800030ee4342c185dbc5358 (diff)
downloadgitlab-ce-cc66ec2b73d6fa581f5300957597615ed1b58c55.tar.gz
Fixed Ruby to be better for performance
Fixed controls not showing in groups which fixes tests
-rw-r--r--app/controllers/projects/project_members_controller.rb22
-rw-r--r--app/views/shared/members/_member.html.haml10
2 files changed, 14 insertions, 18 deletions
diff --git a/app/controllers/projects/project_members_controller.rb b/app/controllers/projects/project_members_controller.rb
index ccf5ff35171..10bc75b4c5e 100644
--- a/app/controllers/projects/project_members_controller.rb
+++ b/app/controllers/projects/project_members_controller.rb
@@ -10,20 +10,20 @@ class Projects::ProjectMembersController < Projects::ApplicationController
@project_members = @project.project_members
@project_members = @project_members.non_invite unless can?(current_user, :admin_project, @project)
- @group = @project.group
+ group = @project.group
- if @group
- @group_members = @group.group_members
- @group_members = @group_members.non_invite unless can?(current_user, :admin_group, @group)
+ if group
+ group_members = group.group_members.where.not(user_id: @project_members.select(:user_id))
+ group_members = group_members.non_invite unless can?(current_user, :admin_group, @group)
end
if params[:search].present?
- users = @project.users.search(params[:search]).to_a
- @project_members = @project_members.where(user_id: users)
+ user_ids = @project.users.search(params[:search]).select(:id)
+ @project_members = @project_members.where(user_id: user_ids)
- if @group_members
- users = @group.users.search(params[:search]).to_a
- @group_members = @group_members.where(user_id: users)
+ if group_members
+ user_ids = group.users.search(params[:search]).select(:id)
+ group_members = group_members.where(user_id: user_ids)
end
@group_links = @project.project_group_links.where(group_id: @project.invited_groups.search(params[:search]).select(:id))
@@ -31,8 +31,8 @@ class Projects::ProjectMembersController < Projects::ApplicationController
members_id = @project_members.pluck(:id)
- if @group_members
- members_id << @group_members.select{ |member| !@project_members.find_by(user_id: member.user_id) }.select(&:id)
+ if group_members
+ members_id << group_members.pluck(:id)
end
@project_members = Member.where(id: members_id.flatten).order(access_level: :desc).page(params[:page])
diff --git a/app/views/shared/members/_member.html.haml b/app/views/shared/members/_member.html.haml
index bf42c9080a6..aa5b39151e6 100644
--- a/app/views/shared/members/_member.html.haml
+++ b/app/views/shared/members/_member.html.haml
@@ -12,10 +12,6 @@
= link_to user.name, user_path(user)
%span.cgray= user.to_reference
- - if member.real_source_type == 'Group'
- &middot;
- %span.cblue=member.group.name
-
- if user == current_user
%span.label.label-success.prepend-left-5 It's you
@@ -24,8 +20,8 @@
%strong Blocked
- if source.instance_of?(Group) && !@group
- = link_to source, class: "member-group-link prepend-left-5" do
- = "ยท #{source.name}"
+ &middot;
+ = link_to source.name, source, class: "member-group-link"
.hidden-xs.cgray
- if member.request?
@@ -49,7 +45,7 @@
= time_ago_with_tooltip(member.created_at)
- if show_roles
.controls.member-controls
- - if show_controls && member.real_source_type == 'Project'
+ - if show_controls && (member.respond_to?(:group) && @members) || (member.respond_to?(:project) && @project_members)
- if user != current_user
= form_for member, remote: true, html: { class: 'form-horizontal js-edit-member-form' } do |f|
= f.select :access_level, options_for_select(member.class.access_level_roles, member.access_level), {}, class: 'form-control member-form-control append-right-5 js-member-update-control', id: "member_access_level_#{member.id}", disabled: !can_admin_member