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
@@ -43,4 +43,12 @@ class TeamMembersController < ProjectResourceController
Loading
@@ -43,4 +43,12 @@ class TeamMembersController < ProjectResourceController
format.js { render nothing: true } format.js { render nothing: true }
end end
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 end
Loading
@@ -21,6 +21,22 @@ class UsersProject < ActiveRecord::Base
Loading
@@ -21,6 +21,22 @@ class UsersProject < ActiveRecord::Base
delegate :name, :email, to: :user, prefix: true delegate :name, :email, to: :user, prefix: true
   
class << self 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) def bulk_delete(project, user_ids)
UsersProject.transaction do UsersProject.transaction do
UsersProject.where(:user_id => user_ids, :project_id => project.id).each do |users_project| 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
@@ -5,9 +5,14 @@
Loading
@@ -5,9 +5,14 @@
   
- if can? current_user, :admin_team_member, @project - if can? current_user, :admin_team_member, @project
%p.slead %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 Read more about project permissions
%strong= link_to "here", help_permissions_path, class: "vlink" %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} = render partial: "team_members/team", locals: {project: @project}
Loading
@@ -188,7 +188,6 @@ Gitlab::Application.routes.draw do
Loading
@@ -188,7 +188,6 @@ Gitlab::Application.routes.draw do
:via => [:get, :post], constraints: {from: /.+/, to: /.+/} :via => [:get, :post], constraints: {from: /.+/, to: /.+/}
   
resources :team, controller: 'team_members', only: [:index] resources :team, controller: 'team_members', only: [:index]
resources :team_members
resources :milestones resources :milestones
resources :labels, only: [:index] resources :labels, only: [:index]
resources :issues do resources :issues do
Loading
@@ -199,6 +198,16 @@ Gitlab::Application.routes.draw do
Loading
@@ -199,6 +198,16 @@ Gitlab::Application.routes.draw do
end end
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 resources :notes, only: [:index, :create, :destroy] do
collection do collection do
post :preview 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