Feature implemented
This commit is contained in:
parent
012d62b198
commit
fd0aca1225
|
@ -43,4 +43,12 @@ class TeamMembersController < ProjectResourceController
|
|||
format.js { render nothing: true }
|
||||
end
|
||||
end
|
||||
|
||||
def apply_import
|
||||
giver = Project.find(params[:source_project_id])
|
||||
status = UsersProject.import_team(giver, project)
|
||||
notice = status ? "Succesfully imported" : "Import failed"
|
||||
|
||||
redirect_to project_team_members_path(project), notice: notice
|
||||
end
|
||||
end
|
||||
|
|
|
@ -21,6 +21,22 @@ class UsersProject < ActiveRecord::Base
|
|||
delegate :name, :email, to: :user, prefix: true
|
||||
|
||||
class << self
|
||||
def import_team(source_project, target_project)
|
||||
UsersProject.transaction do
|
||||
team = source_project.users_projects.all
|
||||
|
||||
team.each do |tm|
|
||||
# Skip if user already present in team
|
||||
next if target_project.users.include?(tm.user)
|
||||
|
||||
new_tm = tm.dup
|
||||
new_tm.id = nil
|
||||
new_tm.project_id = target_project.id
|
||||
new_tm.save
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def bulk_delete(project, user_ids)
|
||||
UsersProject.transaction do
|
||||
UsersProject.where(:user_id => user_ids, :project_id => project.id).each do |users_project|
|
||||
|
|
17
app/views/team_members/import.html.haml
Normal file
17
app/views/team_members/import.html.haml
Normal file
|
@ -0,0 +1,17 @@
|
|||
= render "projects/project_head"
|
||||
|
||||
%h3.page_title
|
||||
= "Import team from another project"
|
||||
%hr
|
||||
%p.slead
|
||||
Read more about team import #{link_to "here", '#', class: 'vlink'}.
|
||||
= form_tag apply_import_project_team_members_path(@project), method: 'post' do
|
||||
%p.slead Choose project you want to use as team source:
|
||||
.padded
|
||||
= label_tag :source_project_id, "Project"
|
||||
.input= select_tag(:source_project_id, options_from_collection_for_select(current_user.projects, :id, :name), prompt: "Select project", class: "chosen xxlarge", required: true)
|
||||
|
||||
.actions
|
||||
= submit_tag 'Save', class: "btn save-btn"
|
||||
= link_to "Cancel", project_team_index_path(@project), class: "btn cancel-btn"
|
||||
|
|
@ -5,9 +5,14 @@
|
|||
|
||||
- if can? current_user, :admin_team_member, @project
|
||||
%p.slead
|
||||
= link_to new_project_team_member_path(@project), class: "btn small right", title: "New Team Member" do
|
||||
New Team Member
|
||||
Read more about project permissions
|
||||
%strong= link_to "here", help_permissions_path, class: "vlink"
|
||||
|
||||
%span.right
|
||||
= link_to import_project_team_members_path(@project), class: "btn small grouped", title: "Import team from another project" do
|
||||
Import team from another project
|
||||
= link_to new_project_team_member_path(@project), class: "btn success small grouped", title: "New Team Member" do
|
||||
New Team Member
|
||||
|
||||
.clearfix
|
||||
= render partial: "team_members/team", locals: {project: @project}
|
||||
|
|
|
@ -188,7 +188,6 @@ Gitlab::Application.routes.draw do
|
|||
:via => [:get, :post], constraints: {from: /.+/, to: /.+/}
|
||||
|
||||
resources :team, controller: 'team_members', only: [:index]
|
||||
resources :team_members
|
||||
resources :milestones
|
||||
resources :labels, only: [:index]
|
||||
resources :issues do
|
||||
|
@ -199,6 +198,16 @@ Gitlab::Application.routes.draw do
|
|||
end
|
||||
end
|
||||
|
||||
resources :team_members do
|
||||
collection do
|
||||
|
||||
# Used for import team
|
||||
# from another project
|
||||
get :import
|
||||
post :apply_import
|
||||
end
|
||||
end
|
||||
|
||||
resources :notes, only: [:index, :create, :destroy] do
|
||||
collection do
|
||||
post :preview
|
||||
|
|
Loading…
Reference in a new issue