Skip to content
Snippets Groups Projects
Commit fd0aca12 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

Feature implemented

parent 012d62b1
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -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
Loading
Loading
@@ -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|
Loading
Loading
= 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"
Loading
Loading
@@ -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}
Loading
Loading
@@ -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
Loading
Loading
@@ -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
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment