From 38ec84cde97a0685f6081b405823f7f0b5c49899 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 28 Apr 2015 10:33:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E5=88=A0=E9=99=A4=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=BA=93=E7=9A=84=E6=93=8D=E4=BD=9C=E7=BD=AE=E5=85=A5=E5=90=8E?= =?UTF-8?q?=E5=8F=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/repositories_controller.rb | 20 +++------------ app/models/project.rb | 2 +- app/tasks/destroy_repository_task.rb | 25 +++++++++++++++++++ ...150428021035_add_hidden_to_repositories.rb | 5 ++++ db/schema.rb | 3 ++- 5 files changed, 36 insertions(+), 19 deletions(-) create mode 100644 app/tasks/destroy_repository_task.rb create mode 100644 db/migrate/20150428021035_add_hidden_to_repositories.rb diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index c90cc1cc3..5fe953563 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -236,24 +236,10 @@ update end def destroy - @root_path=RepositoriesHelper::ROOT_PATH - @repo_name=User.current.login.to_s+"_"+@repository.identifier.to_s - @repository_name=User.current.login.to_s+"/"+@repository.identifier.to_s+".git" - @middle=User.current.login.to_s+"_"+@repository.identifier.to_s+"-write:" - @repository.destroy if request.delete? + DestroyRepositoryTask.new.destroy(User.current.id, @repository.id) + @repository.hidden = true + @repository.save redirect_to settings_project_url(@project, :tab => 'repositories') - if(@repository.type=="Repository::Git") - logger.info "destory the repository value"+"root path"+@root_path+"repo_name"+@repo_name+ - "repository_name"+@repository_name+"user group"+@middle - system "sed -i /"+@repo_name+"/{d} "+@root_path+"htdocs/user.passwd" - system "sed -i /"+@middle+"/{d} "+@root_path+"htdocs/group.passwd" - system "rm -r "+@root_path+"htdocs/"+@repository_name - # if(@sed_user&&@sed_group&&@remove) - # else - # logger.info "An error occured when destory the repository"+"delete form passwd: \n"+ - # @sed_user+"delete from group"+@sed_group+"delete from file"+@remove - # end - end end def show diff --git a/app/models/project.rb b/app/models/project.rb index 07854822e..f257058ea 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -51,7 +51,7 @@ class Project < ActiveRecord::Base has_many :issue_categories, :dependent => :delete_all, :order => "#{IssueCategory.table_name}.name" has_many :boards, :dependent => :destroy, :order => "position ASC" has_one :repository, :conditions => ["is_default = ?", true] - has_many :repositories, :dependent => :destroy + has_many :repositories, :dependent => :destroy, conditions: "hidden=false" has_many :changesets, :through => :repository #added by xianbo for delete biding_project has_many :biding_projects, :dependent => :destroy diff --git a/app/tasks/destroy_repository_task.rb b/app/tasks/destroy_repository_task.rb new file mode 100644 index 000000000..3e434422e --- /dev/null +++ b/app/tasks/destroy_repository_task.rb @@ -0,0 +1,25 @@ +#coding=utf-8 +# + +class DestroyRepositoryTask + def destroy(user_id, rep_id) + user = User.find(user_id) + repository = Repository.find(rep_id) + + Rails.logger.info "start delete repository #{user} #{repository}" + @root_path=RepositoriesHelper::ROOT_PATH + @repo_name=user.login.to_s+"_"+repository.identifier.to_s + @repository_name=user.login.to_s+"/"+repository.identifier.to_s+".git" + @middle=user.login.to_s+"_"+repository.identifier.to_s+"-write:" + repository.destroy + if(repository.type=="Repository::Git") + Rails.logger.info "destory the repository value"+"root path"+@root_path+"repo_name"+@repo_name+ + "repository_name"+@repository_name+"user group"+@middle + system "sed -i /"+@repo_name+"/{d} "+@root_path+"htdocs/user.passwd" + system "sed -i /"+@middle+"/{d} "+@root_path+"htdocs/group.passwd" + system "rm -r "+@root_path+"htdocs/"+@repository_name + end + end + + handle_asynchronously :destroy,:queue => 'repository' +end diff --git a/db/migrate/20150428021035_add_hidden_to_repositories.rb b/db/migrate/20150428021035_add_hidden_to_repositories.rb new file mode 100644 index 000000000..13f10ce4f --- /dev/null +++ b/db/migrate/20150428021035_add_hidden_to_repositories.rb @@ -0,0 +1,5 @@ +class AddHiddenToRepositories < ActiveRecord::Migration + def change + add_column :repositories, :hidden, :boolean, default: false + end +end diff --git a/db/schema.rb b/db/schema.rb index 3e07b71db..dcbe017fb 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20150422034543) do +ActiveRecord::Schema.define(:version => 20150428021035) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -1058,6 +1058,7 @@ ActiveRecord::Schema.define(:version => 20150422034543) do t.text "extra_info" t.string "identifier" t.boolean "is_default", :default => false + t.boolean "hidden", :default => false end add_index "repositories", ["project_id"], :name => "index_repositories_on_project_id"