修复:导入项目相关问题

This commit is contained in:
yystopf 2024-06-03 10:36:31 +08:00
parent 4c82863851
commit c58ca88edd
5 changed files with 38 additions and 7 deletions

View File

@ -32,7 +32,7 @@ class Admins::ProjectsController < Admins::BaseController
def destroy
project = Project.find_by!(id: params[:id])
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!
# 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)

View File

@ -255,7 +255,7 @@ class ProjectsController < ApplicationController
def destroy
if current_user.admin? || @project.manager?(current_user)
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.forked_projects.update_all(forked_from_project_id: nil)
# 如果该项目有所属的项目分类以及为私有项目,需要更新对应数量
@ -305,6 +305,25 @@ class ProjectsController < ApplicationController
end
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
# 项目名称,标识,所有者变化时重置缓存

View File

@ -11,7 +11,7 @@ class CheckMirrorJob < ApplicationJob
unless response.present?
SyncLog.sync_log("==========check_project_error_id:#{project.id}============")
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 #删除成功或者仓库不存在,都重新创建
repository_params= {
name: project.identifier,

View File

@ -19,7 +19,18 @@ class MigrateRemoteRepositoryJob < ApplicationJob
UpdateProjectTopicJob.set(wait: 1.seconds).perform_later(project_id) if project_id.present?
puts "############ mirror status: #{repo.mirror.status} ############"
else
repo&.mirror&.failed!
gitea_result = $gitea_client.get_repos_by_owner_repo(repo&.project&.owner&.login, repo&.project&.identifier)
if gitea_result["empty"]
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
# UpdateProjectTopicJob 中语言要延迟1S才能获取
BroadcastMirrorRepoMsgJob.set(wait: 1.seconds).perform_later(repo.id) unless repo&.mirror.waiting?

View File

@ -1,9 +1,10 @@
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
@repo_name = repo_name
@token = token
end
def call
@ -13,7 +14,7 @@ class Gitea::Repository::DeleteService < Gitea::ClientService
private
def params
Hash.new.merge(token: user.gitea_token)
Hash.new.merge(token: token)
end
def url