修复:导入项目相关问题
This commit is contained in:
		
							parent
							
								
									4c82863851
								
							
						
					
					
						commit
						c58ca88edd
					
				| 
						 | 
					@ -32,7 +32,7 @@ class Admins::ProjectsController < Admins::BaseController
 | 
				
			||||||
  def destroy
 | 
					  def destroy
 | 
				
			||||||
    project = Project.find_by!(id: params[:id])
 | 
					    project = Project.find_by!(id: params[:id])
 | 
				
			||||||
    ActiveRecord::Base.transaction do
 | 
					    ActiveRecord::Base.transaction do
 | 
				
			||||||
      Gitea::Repository::DeleteService.new(project.owner, project.identifier).call
 | 
					      Gitea::Repository::DeleteService.new(project.owner, project.identifier, current_user.gitea_token).call
 | 
				
			||||||
      project.destroy!
 | 
					      project.destroy!
 | 
				
			||||||
      # render_delete_success
 | 
					      # render_delete_success
 | 
				
			||||||
      UserAction.create(action_id: project.id, action_type: "DestroyProject", user_id: current_user.id, :ip => request.remote_ip, data_bank: project.attributes.to_json)
 | 
					      UserAction.create(action_id: project.id, action_type: "DestroyProject", user_id: current_user.id, :ip => request.remote_ip, data_bank: project.attributes.to_json)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -255,7 +255,7 @@ class ProjectsController < ApplicationController
 | 
				
			||||||
  def destroy
 | 
					  def destroy
 | 
				
			||||||
    if current_user.admin? || @project.manager?(current_user)
 | 
					    if current_user.admin? || @project.manager?(current_user)
 | 
				
			||||||
      ActiveRecord::Base.transaction do
 | 
					      ActiveRecord::Base.transaction do
 | 
				
			||||||
        Gitea::Repository::DeleteService.new(@project.owner, @project.identifier).call
 | 
					        Gitea::Repository::DeleteService.new(@project.owner, @project.identifier,current_user.gitea_token).call
 | 
				
			||||||
        @project.destroy!
 | 
					        @project.destroy!
 | 
				
			||||||
        @project.forked_projects.update_all(forked_from_project_id: nil)
 | 
					        @project.forked_projects.update_all(forked_from_project_id: nil)
 | 
				
			||||||
        # 如果该项目有所属的项目分类以及为私有项目,需要更新对应数量
 | 
					        # 如果该项目有所属的项目分类以及为私有项目,需要更新对应数量
 | 
				
			||||||
| 
						 | 
					@ -305,6 +305,25 @@ class ProjectsController < ApplicationController
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def simple
 | 
					  def simple
 | 
				
			||||||
 | 
					    if !@project.common? && @project&.repository&.mirror&.waiting?
 | 
				
			||||||
 | 
					      gitea_result = $gitea_client.get_repos_by_owner_repo(@project&.owner&.login, @project&.identifier)
 | 
				
			||||||
 | 
					      if !gitea_result["empty"]
 | 
				
			||||||
 | 
					        @project&.update_columns(gpid: gitea_result["id"])
 | 
				
			||||||
 | 
					        @project&.repository&.mirror&.succeeded!
 | 
				
			||||||
 | 
					        project_id = @project&.id
 | 
				
			||||||
 | 
					        user_id = @project&.owner&.id
 | 
				
			||||||
 | 
					        puts "############ mirror project_id,user_id: #{project_id},#{user_id}  ############"
 | 
				
			||||||
 | 
					        OpenProjectDevOpsJob.set(wait: 5.seconds).perform_later(project_id, user_id) if project_id.present? && user_id.present?
 | 
				
			||||||
 | 
					        UpdateProjectTopicJob.set(wait: 1.seconds).perform_later(project_id) if project_id.present?
 | 
				
			||||||
 | 
					        puts "############ mirror status: #{repo.mirror.status} ############"
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    elsif !@project.common? && @project&.repository&.mirror&.failed?
 | 
				
			||||||
 | 
					      Gitea::Repository::DeleteService.new(@project.owner, @project.identifier,current_user.gitea_token).call
 | 
				
			||||||
 | 
					      @project.destroy!
 | 
				
			||||||
 | 
					      @project.forked_projects.update_all(forked_from_project_id: nil)
 | 
				
			||||||
 | 
					      # 如果该项目有所属的项目分类以及为私有项目,需要更新对应数量
 | 
				
			||||||
 | 
					      @project.project_category.decrement!(:private_projects_count, 1) if @project.project_category.present? && !@project.is_public
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
    # 为了缓存活跃项目的基本信息,后续删除
 | 
					    # 为了缓存活跃项目的基本信息,后续删除
 | 
				
			||||||
    Cache::V2::ProjectCommonService.new(@project.id).read
 | 
					    Cache::V2::ProjectCommonService.new(@project.id).read
 | 
				
			||||||
    # 项目名称,标识,所有者变化时重置缓存
 | 
					    # 项目名称,标识,所有者变化时重置缓存
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,7 +11,7 @@ class CheckMirrorJob < ApplicationJob
 | 
				
			||||||
      unless response.present?
 | 
					      unless response.present?
 | 
				
			||||||
        SyncLog.sync_log("==========check_project_error_id:#{project.id}============")
 | 
					        SyncLog.sync_log("==========check_project_error_id:#{project.id}============")
 | 
				
			||||||
        ActiveRecord::Base.transaction do
 | 
					        ActiveRecord::Base.transaction do
 | 
				
			||||||
          delete_gitea = Gitea::Repository::DeleteService.new(project.owner, project.identifier).call
 | 
					          delete_gitea = Gitea::Repository::DeleteService.new(project.owner, project.identifier, project.owner.gitea_token).call
 | 
				
			||||||
          if delete_gitea.status == 204 || delete_gitea.status == 404   #删除成功或者仓库不存在,都重新创建
 | 
					          if delete_gitea.status == 204 || delete_gitea.status == 404   #删除成功或者仓库不存在,都重新创建
 | 
				
			||||||
            repository_params= {
 | 
					            repository_params= {
 | 
				
			||||||
              name: project.identifier,
 | 
					              name: project.identifier,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,7 +19,18 @@ class MigrateRemoteRepositoryJob < ApplicationJob
 | 
				
			||||||
      UpdateProjectTopicJob.set(wait: 1.seconds).perform_later(project_id) if project_id.present?
 | 
					      UpdateProjectTopicJob.set(wait: 1.seconds).perform_later(project_id) if project_id.present?
 | 
				
			||||||
      puts "############ mirror status: #{repo.mirror.status} ############"
 | 
					      puts "############ mirror status: #{repo.mirror.status} ############"
 | 
				
			||||||
    else 
 | 
					    else 
 | 
				
			||||||
 | 
					      gitea_result = $gitea_client.get_repos_by_owner_repo(repo&.project&.owner&.login, repo&.project&.identifier)
 | 
				
			||||||
 | 
					      if gitea_result["empty"]
 | 
				
			||||||
        repo&.mirror&.failed!
 | 
					        repo&.mirror&.failed!
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					        repo&.project&.update_columns(gpid: gitea_result["id"])
 | 
				
			||||||
 | 
					        repo&.mirror&.succeeded!
 | 
				
			||||||
 | 
					        project_id = repo&.project&.id
 | 
				
			||||||
 | 
					        puts "############ mirror project_id,user_id: #{project_id},#{user_id}  ############"
 | 
				
			||||||
 | 
					        OpenProjectDevOpsJob.set(wait: 5.seconds).perform_later(project_id, user_id) if project_id.present? && user_id.present?
 | 
				
			||||||
 | 
					        UpdateProjectTopicJob.set(wait: 1.seconds).perform_later(project_id) if project_id.present?
 | 
				
			||||||
 | 
					        puts "############ mirror status: #{repo.mirror.status} ############"
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
    # UpdateProjectTopicJob 中语言要延迟1S才能获取
 | 
					    # UpdateProjectTopicJob 中语言要延迟1S才能获取
 | 
				
			||||||
    BroadcastMirrorRepoMsgJob.set(wait: 1.seconds).perform_later(repo.id) unless repo&.mirror.waiting?
 | 
					    BroadcastMirrorRepoMsgJob.set(wait: 1.seconds).perform_later(repo.id) unless repo&.mirror.waiting?
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,9 +1,10 @@
 | 
				
			||||||
class Gitea::Repository::DeleteService < Gitea::ClientService
 | 
					class Gitea::Repository::DeleteService < Gitea::ClientService
 | 
				
			||||||
  attr_reader :user, :repo_name
 | 
					  attr_reader :user, :repo_name, :token
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def initialize(user, repo_name)
 | 
					  def initialize(user, repo_name, token=nil)
 | 
				
			||||||
    @user = user
 | 
					    @user = user
 | 
				
			||||||
    @repo_name = repo_name
 | 
					    @repo_name = repo_name
 | 
				
			||||||
 | 
					    @token = token
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def call
 | 
					  def call
 | 
				
			||||||
| 
						 | 
					@ -13,7 +14,7 @@ class Gitea::Repository::DeleteService < Gitea::ClientService
 | 
				
			||||||
  private
 | 
					  private
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def params
 | 
					  def params
 | 
				
			||||||
    Hash.new.merge(token: user.gitea_token)
 | 
					    Hash.new.merge(token: token)
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def url
 | 
					  def url
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue