From e90c79486a6eeedc7c96fe9effcf37c17d422958 Mon Sep 17 00:00:00 2001 From: chenjing Date: Tue, 6 Jun 2023 10:18:32 +0800 Subject: [PATCH 01/27] add github token for mirror --- app/controllers/projects_controller.rb | 2 +- app/forms/projects/migrate_form.rb | 2 +- app/models/repository.rb | 1 + app/models/user.rb | 29 +++++++++++++++----- app/services/projects/migrate_service.rb | 2 +- app/services/repositories/migrate_service.rb | 3 +- 6 files changed, 28 insertions(+), 11 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index fc56f1ca9..55c31918a 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -293,7 +293,7 @@ class ProjectsController < ApplicationController end def mirror_params - params.permit(:user_id, :name, :description, :repository_name, :is_mirror, :auth_username, + params.permit(:user_id, :name, :description, :repository_name, :is_mirror, :auth_username, :auth_token, :auth_password, :project_category_id, :project_language_id, :clone_addr, :private) end diff --git a/app/forms/projects/migrate_form.rb b/app/forms/projects/migrate_form.rb index 12a4ee617..98ebbc7ac 100644 --- a/app/forms/projects/migrate_form.rb +++ b/app/forms/projects/migrate_form.rb @@ -1,5 +1,5 @@ class Projects::MigrateForm < BaseForm - attr_accessor :user_id, :name, :repository_name, :project_category_id, :description, + attr_accessor :user_id, :name, :repository_name, :project_category_id, :description, :auth_token, :project_language_id, :clone_addr, :private, :is_mirror, :auth_username, :auth_password, :owner validates :user_id, :name, :repository_name, :clone_addr, presence: true diff --git a/app/models/repository.rb b/app/models/repository.rb index c60164001..ed1f81db3 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -43,6 +43,7 @@ class Repository < ApplicationRecord validates :identifier, presence: true delegate :default_branch, to: :project, allow_nil: true + attr_accessor :auth_token def to_param self.identifier.parameterize diff --git a/app/models/user.rb b/app/models/user.rb index 5e0ff12d7..9d76696ea 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -39,15 +39,14 @@ # business :boolean default("0") # profile_completed :boolean default("0") # laboratory_id :integer -# is_shixun_marker :boolean default("0") -# admin_visitable :boolean default("0") -# collaborator :boolean default("0") +# platform :string(255) default("0") +# gitea_token :string(255) # gitea_uid :integer +# is_shixun_marker :boolean default("0") # is_sync_pwd :boolean default("1") # watchers_count :integer default("0") # devops_step :integer default("0") -# gitea_token :string(255) -# platform :string(255) +# sign_cla :boolean default("0") # # Indexes # @@ -56,8 +55,7 @@ # index_users_on_homepage_teacher (homepage_teacher) # index_users_on_laboratory_id (laboratory_id) # index_users_on_login (login) UNIQUE -# index_users_on_mail (mail) UNIQUE -# index_users_on_phone (phone) UNIQUE +# index_users_on_mail (mail) # index_users_on_type (type) # @@ -463,6 +461,23 @@ class User < Owner end end + + def register_gitea + psd = "12345678" + interactor = Gitea::RegisterInteractor.call({username: self.login, email: self.mail, password: psd}) + if interactor.success? + gitea_user = interactor.result + result = Gitea::User::GenerateTokenService.call(self.login, psd) + self.gitea_token = result['sha1'] + self.gitea_uid = gitea_user[:body]['id'] + self.password = psd + self.password_confirmation = psd + if self.save! + UserExtension.create!(user_id: self.id) + end + end + end + def activate! update_attribute(:status, STATUS_ACTIVE) prohibit_gitea_user_login!(false) diff --git a/app/services/projects/migrate_service.rb b/app/services/projects/migrate_service.rb index 68ed9f642..f157ada1d 100644 --- a/app/services/projects/migrate_service.rb +++ b/app/services/projects/migrate_service.rb @@ -9,7 +9,6 @@ class Projects::MigrateService < ApplicationService def call raise Error, "user_id不正确." unless authroize_user_id_success - @project = Project.new(project_params) if @project.save! ProjectUnit.init_types(@project.id, project.project_type) @@ -55,6 +54,7 @@ class Projects::MigrateService < ApplicationService user_id: params[:user_id], login: params[:auth_username], password: params[:auth_password], + auth_token: params[:auth_token], is_mirror: params[:is_mirror], source_clone_url: params[:source_clone_url] } diff --git a/app/services/repositories/migrate_service.rb b/app/services/repositories/migrate_service.rb index 7cf1cb3e7..deb0e30d3 100644 --- a/app/services/repositories/migrate_service.rb +++ b/app/services/repositories/migrate_service.rb @@ -32,7 +32,8 @@ class Repositories::MigrateService < ApplicationService private: params[:hidden], mirror: wrapper_mirror || false, auth_username: params[:login], - auth_password: Base64.decode64(params[:password] || "") + auth_password: Base64.decode64(params[:password] || ""), + auth_token: params[:auth_token] } end From dc6b92c77464a081f094379eb359b2e740d40d26 Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Tue, 6 Jun 2023 17:11:08 +0800 Subject: [PATCH 02/27] =?UTF-8?q?=E5=AF=BC=E8=88=AA=E4=B8=AA=E4=BA=BA?= =?UTF-8?q?=E4=B8=BB=E9=A1=B5=E5=8E=BB=E6=8E=89=E5=9B=BA=E5=AE=9A=E6=98=BE?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/settings_controller.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/controllers/settings_controller.rb b/app/controllers/settings_controller.rb index def2e2c89..ecabeca21 100644 --- a/app/controllers/settings_controller.rb +++ b/app/controllers/settings_controller.rb @@ -14,10 +14,10 @@ class SettingsController < ApplicationController private def get_navbar @navbar = default_laboratory.navbar - if User.current.logged? - pernal_index = {"name"=>"个人主页", "link"=>get_site_url("url", "#{Rails.application.config_for(:configuration)['platform_url']}/current_user"), "hidden"=>false} - @navbar << pernal_index - end + # if User.current.logged? + # pernal_index = {"name"=>"个人主页", "link"=>get_site_url("url", "#{Rails.application.config_for(:configuration)['platform_url']}/current_user"), "hidden"=>false} + # @navbar << pernal_index + # end end def get_add_menu From 14da90d60199d7e34a86d41dc922fbc02737be06 Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Tue, 6 Jun 2023 17:54:35 +0800 Subject: [PATCH 03/27] =?UTF-8?q?fixed=20=E6=9C=80=E5=90=8E=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E5=A2=9E=E5=8A=A0=E5=8F=82=E6=95=B0stat=E5=8A=A0?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/gitea/repository/commits/file_list_service.rb | 2 +- app/services/gitea/repository/commits/list_service.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/services/gitea/repository/commits/file_list_service.rb b/app/services/gitea/repository/commits/file_list_service.rb index 14c873fd3..b0bba7abe 100644 --- a/app/services/gitea/repository/commits/file_list_service.rb +++ b/app/services/gitea/repository/commits/file_list_service.rb @@ -20,7 +20,7 @@ class Gitea::Repository::Commits::FileListService < Gitea::ClientService private def params - {sha: args[:sha] || 'master', page: args[:page] || PAGINATE_DEFAULT_PAGE, limit: args[:limit] || PAGINATE_DEFAULT_LIMIT, token: args[:token] || "", stat: args[:page].to_i != 1 } + {sha: args[:sha] || 'master', page: args[:page] || PAGINATE_DEFAULT_PAGE, limit: args[:limit] || PAGINATE_DEFAULT_LIMIT, token: args[:token] || "", stat: args[:page].to_i != 1 && args[:limit] !=1 } end def url diff --git a/app/services/gitea/repository/commits/list_service.rb b/app/services/gitea/repository/commits/list_service.rb index 124cf544d..700508539 100644 --- a/app/services/gitea/repository/commits/list_service.rb +++ b/app/services/gitea/repository/commits/list_service.rb @@ -19,7 +19,7 @@ class Gitea::Repository::Commits::ListService < Gitea::ClientService private def params - { sha: args[:sha] || 'master', page: args[:page] || PAGINATE_DEFAULT_PAGE, limit: args[:limit] || PAGINATE_DEFAULT_LIMIT, token: args[:token] || "" } + { sha: args[:sha] || 'master', page: args[:page] || PAGINATE_DEFAULT_PAGE, limit: args[:limit] || PAGINATE_DEFAULT_LIMIT, token: args[:token] || "", stat: args[:page].to_i != 1 && args[:limit] !=1 } end def url From 8f51955bd7e80aead6b1f500a9efc5448aaf9050 Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Wed, 7 Jun 2023 10:54:36 +0800 Subject: [PATCH 04/27] =?UTF-8?q?=E6=94=AF=E6=8C=81=E7=94=A8=E6=88=B7fork?= =?UTF-8?q?=E8=87=AA=E5=B7=B1=E7=9A=84=E4=BB=93=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/forks_controller.rb | 4 ++-- app/services/gitea/repository/fork_service.rb | 7 +++++-- app/services/projects/fork_service.rb | 10 +++++++--- lib/tasks/batch_forked_project.rake | 2 +- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/controllers/forks_controller.rb b/app/controllers/forks_controller.rb index c740c8b03..53b043f49 100644 --- a/app/controllers/forks_controller.rb +++ b/app/controllers/forks_controller.rb @@ -5,12 +5,12 @@ class ForksController < ApplicationController before_action :authenticate_project!, :authenticate_user! def create - @new_project = Projects::ForkService.new(current_user, @project, params[:organization]).call + @new_project = Projects::ForkService.new(current_user, @project, params[:organization], params[:new_name], params[:new_identifier]).call end private def authenticate_project! - if current_user&.id == @project.user_id + if current_user&.id == @project.user_id && (params[:new_identifier].blank? || params[:new_identifier] == @project.identifier) render_result(-1, "自己不能fork自己的项目") elsif Project.exists?(user_id: current_user.id, identifier: @project.identifier) render_result(0, "fork失败,你已拥有了这个项目") diff --git a/app/services/gitea/repository/fork_service.rb b/app/services/gitea/repository/fork_service.rb index c43a9ddf2..ca0c0fe68 100644 --- a/app/services/gitea/repository/fork_service.rb +++ b/app/services/gitea/repository/fork_service.rb @@ -1,5 +1,5 @@ class Gitea::Repository::ForkService < Gitea::ClientService - attr_reader :old_owner, :target_owner, :repo_name, :organization + attr_reader :old_owner, :target_owner, :repo_name, :organization, :new_identifier # old_owner: 被clone的项目(源项目)拥有者 # target_owner: clone后的醒目(新项目)的拥有者 @@ -7,10 +7,12 @@ class Gitea::Repository::ForkService < Gitea::ClientService # { # "organization": "string" #组织名称 # } - def initialize(old_owner, target_owner, repo_name, organization=nil) + def initialize(old_owner, target_owner, repo_name, organization=nil, new_identifier=nil) @old_owner = old_owner @target_owner = target_owner @repo_name = repo_name + @organization = organization + @new_identifier = new_identifier end def call @@ -24,6 +26,7 @@ class Gitea::Repository::ForkService < Gitea::ClientService def request_params hash = Hash.new.merge(token: target_owner.gitea_token) hash = hash.merge(data: {organization: organization}) if organization + hash = hash.merge(data: {name: new_identifier}) if new_identifier hash end diff --git a/app/services/projects/fork_service.rb b/app/services/projects/fork_service.rb index f8b38df47..3e6a153fb 100644 --- a/app/services/projects/fork_service.rb +++ b/app/services/projects/fork_service.rb @@ -1,10 +1,12 @@ class Projects::ForkService < ApplicationService - attr_reader :target_owner, :project, :organization + attr_reader :target_owner, :project, :organization, :new_name, :new_identifier - def initialize(target_owner, project, organization=nil) + def initialize(target_owner, project, organization=nil, new_name=nil, new_identifier=nil) @target_owner = target_owner @project = project @organization = organization + @new_name = new_name + @new_identifier = new_identifier end def call @@ -15,11 +17,13 @@ class Projects::ForkService < ApplicationService :rep_identifier, :project_category_id, :project_language_id, :license_id, :ignore_id, {repository: [:identifier, :hidden]}] - result = Gitea::Repository::ForkService.new(@project.owner, @target_owner, @project.identifier, @organization).call + result = Gitea::Repository::ForkService.new(@project.owner, @target_owner, @project.identifier, @organization, @new_identifier).call clone_project.owner = @target_owner clone_project.forked_from_project_id = @project.id clone_project.gpid = result['id'] + clone_project.name = @new_name if @new_name.present? + clone_project.identifier = @new_identifier if @new_identifier.present? clone_project.save! new_repository = clone_project.repository diff --git a/lib/tasks/batch_forked_project.rake b/lib/tasks/batch_forked_project.rake index 4cb50a77a..e0fea6f5b 100644 --- a/lib/tasks/batch_forked_project.rake +++ b/lib/tasks/batch_forked_project.rake @@ -15,7 +15,7 @@ namespace :batch_forked_project do user = User.find_by(login: username) next if user.blank? next if Project.exists?(user_id: user.id, identifier: project.identifier) - new_project = Projects::ForkService.new(user, project, nil).call + new_project = Projects::ForkService.new(user, project, nil, nil, nil).call random_num = rand(5..20) members = user_logins.sample(random_num) members.each do |m| From aad2db5c5bf55f31907e11d2bbe835ae2a44075e Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Wed, 7 Jun 2023 11:03:49 +0800 Subject: [PATCH 05/27] =?UTF-8?q?=E7=A6=81=E6=AD=A2pr=E8=AE=BF=E9=97=AE?= =?UTF-8?q?=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/pull_requests/index.json.jbuilder | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/pull_requests/index.json.jbuilder b/app/views/pull_requests/index.json.jbuilder index f231e5796..b7f642118 100644 --- a/app/views/pull_requests/index.json.jbuilder +++ b/app/views/pull_requests/index.json.jbuilder @@ -10,6 +10,7 @@ json.project_name @project.name json.project_author @project.owner.try(:login) json.project_author_name @project.owner.try(:show_real_name) json.has_created_pull_requests @project.pull_requests.size > 0 +json.disable_pr_vew @project.pr_view_admin? && !@project.manager?(current_user) json.issues do json.array! @issues.to_a do |issue| From a6fa3f9354e550a1c7121231c4fbb19e1ee7e33d Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Wed, 7 Jun 2023 11:45:50 +0800 Subject: [PATCH 06/27] =?UTF-8?q?=E7=A6=81=E6=AD=A2pr=E8=AE=BF=E9=97=AE?= =?UTF-8?q?=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/pull_requests/_merge_item.json.jbuilder | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/pull_requests/_merge_item.json.jbuilder b/app/views/pull_requests/_merge_item.json.jbuilder index 0db17e265..202530c0b 100644 --- a/app/views/pull_requests/_merge_item.json.jbuilder +++ b/app/views/pull_requests/_merge_item.json.jbuilder @@ -4,6 +4,7 @@ json.issue_versions @project_versions json.issue_priories @project_priories json.project_author @project.owner.try(:show_real_name) json.project_name @project.try(:name) +json.disable_pr_vew @project.pr_view_admin? && !@project.manager?(current_user) json.members do json.array! @project_members.to_a.each do |user| json.id user.id From d87a2fcd7eb8f5cf9b7dfd1fc421de1d79db1895 Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Wed, 7 Jun 2023 13:56:32 +0800 Subject: [PATCH 07/27] =?UTF-8?q?=E6=94=AF=E6=8C=81=E7=94=A8=E6=88=B7fork?= =?UTF-8?q?=E8=87=AA=E5=B7=B1=E7=9A=84=E4=BB=93=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/forks_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/forks_controller.rb b/app/controllers/forks_controller.rb index 53b043f49..7d7db9350 100644 --- a/app/controllers/forks_controller.rb +++ b/app/controllers/forks_controller.rb @@ -12,7 +12,7 @@ class ForksController < ApplicationController def authenticate_project! if current_user&.id == @project.user_id && (params[:new_identifier].blank? || params[:new_identifier] == @project.identifier) render_result(-1, "自己不能fork自己的项目") - elsif Project.exists?(user_id: current_user.id, identifier: @project.identifier) + elsif Project.exists?(user_id: current_user.id, identifier: (params[:new_identifier] || @project.identifier)) render_result(0, "fork失败,你已拥有了这个项目") end # return if current_user != @project.owner From 80f9e1065d50923f05f073654e9b2b5c5631d104 Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Wed, 7 Jun 2023 14:16:22 +0800 Subject: [PATCH 08/27] =?UTF-8?q?=E6=B3=A8=E5=86=8Cerror?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/accounts_controller.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index 59823861f..c40714c98 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -182,6 +182,7 @@ class AccountsController < ApplicationController # user.destroy end Rails.logger.error("##:register error--#{user.try(:id)},message:#{e.message}") + UserAction.create(:action_id => user.try(:id).to_i, :action_type => "register_error", :user_id => user.try(:id).to_i, :ip => "code: #{register_params[:code]}; login: #{register_params[:login]}; namespace: #{register_params[:namespace]}; password: #{password};") logger_error(e) tip_exception(-1, "注册失败") end From 63824eaa8bd04e7ba2b3e14768367ab7ab5fe15c Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Wed, 7 Jun 2023 14:26:19 +0800 Subject: [PATCH 09/27] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B3=A8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/accounts_controller.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index c40714c98..320ca05e2 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -161,6 +161,9 @@ class AccountsController < ApplicationController successful_authentication(user) render_ok end + elsif interactor.result[:message].to_s.include?("user already exists") + UserAction.create(:action_id => 2, :action_type => "register_error", :user_id => user.try(:id).to_i, :ip => "code: #{register_params[:code]}; login: #{register_params[:login]}; namespace: #{register_params[:namespace]}; password: #{password};") + normal_status(-1, "用户已注册,请勿连续操作。") else tip_exception(-1, interactor.result[:message]) end @@ -182,7 +185,7 @@ class AccountsController < ApplicationController # user.destroy end Rails.logger.error("##:register error--#{user.try(:id)},message:#{e.message}") - UserAction.create(:action_id => user.try(:id).to_i, :action_type => "register_error", :user_id => user.try(:id).to_i, :ip => "code: #{register_params[:code]}; login: #{register_params[:login]}; namespace: #{register_params[:namespace]}; password: #{password};") + UserAction.create(:action_id => 1, :action_type => "register_error", :user_id => user.try(:id).to_i, :ip => "code: #{register_params[:code]}; login: #{register_params[:login]}; namespace: #{register_params[:namespace]}; password: #{password};") logger_error(e) tip_exception(-1, "注册失败") end From 471de1dc07f03aa9fbb7e23e24867c65b38fa096 Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Wed, 7 Jun 2023 14:32:29 +0800 Subject: [PATCH 10/27] =?UTF-8?q?=E5=8F=96=E6=B6=88=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E8=B5=84=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/user.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 9d76696ea..dcd13b8ed 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -853,7 +853,8 @@ class User < Owner end def profile_is_completed? - self.nickname.present? && self.mail.present? + # self.nickname.present? && self.mail.present? + true end def trace_token From b8807d60093e887f59b5cc6f4a94d54067193d23 Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Wed, 7 Jun 2023 14:52:03 +0800 Subject: [PATCH 11/27] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E4=BB=85=E6=98=BE=E7=A4=BA=E5=85=AC=E5=BC=80=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E5=8A=A8=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users/project_trends_controller.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/controllers/users/project_trends_controller.rb b/app/controllers/users/project_trends_controller.rb index 9edd56f18..a1b62589f 100644 --- a/app/controllers/users/project_trends_controller.rb +++ b/app/controllers/users/project_trends_controller.rb @@ -6,6 +6,7 @@ class Users::ProjectTrendsController < Users::BaseController else @project_trends = observed_user.project_trends end + @project_trends = @project_trends.joins(:project).where("projects.is_public = TRUE") @project_trends = kaminari_paginate(@project_trends.includes(:trend, :project).order(created_at: :desc)) end end \ No newline at end of file From 4591ef2df34be94d9b093bbc9c4f027cb35db45d Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Wed, 7 Jun 2023 14:55:17 +0800 Subject: [PATCH 12/27] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E4=BB=85=E6=98=BE=E7=A4=BA=E5=85=AC=E5=BC=80=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E5=8A=A8=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users/project_trends_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/users/project_trends_controller.rb b/app/controllers/users/project_trends_controller.rb index a1b62589f..5c636f63b 100644 --- a/app/controllers/users/project_trends_controller.rb +++ b/app/controllers/users/project_trends_controller.rb @@ -6,7 +6,7 @@ class Users::ProjectTrendsController < Users::BaseController else @project_trends = observed_user.project_trends end - @project_trends = @project_trends.joins(:project).where("projects.is_public = TRUE") + @project_trends = @project_trends.left_joins(:project).where("projects.is_public = TRUE") @project_trends = kaminari_paginate(@project_trends.includes(:trend, :project).order(created_at: :desc)) end end \ No newline at end of file From 6f33016a7831e63bdfd8babd25184261b78fa006 Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Wed, 7 Jun 2023 16:31:08 +0800 Subject: [PATCH 13/27] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/gitea/repository/migrate_service.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/services/gitea/repository/migrate_service.rb b/app/services/gitea/repository/migrate_service.rb index ab60b42f3..c605df0bb 100644 --- a/app/services/gitea/repository/migrate_service.rb +++ b/app/services/gitea/repository/migrate_service.rb @@ -34,6 +34,9 @@ class Gitea::Repository::MigrateService < Gitea::ClientService response = post(url, request_params) render_response(response) + rescue => e + puts "MigrateService error: #{e.message}" + [500, e.message, ""] end private From f1ab52da5c74f5af965e7681f9d157834fc154f8 Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Thu, 8 Jun 2023 11:25:03 +0800 Subject: [PATCH 14/27] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E9=99=90=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/application_controller.rb | 19 +++++++++++- app/controllers/projects_controller.rb | 36 ++++++++++++----------- 2 files changed, 37 insertions(+), 18 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 186ee874f..be17a4370 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1161,6 +1161,23 @@ class ApplicationController < ActionController::Base end def find_atme_receivers @atme_receivers = User.where(login: params[:receivers_login]) - end + end + + # 接口限流,请求量大有性能问题 + def request_limit + begin + record_count = Rails.cache.read("request/#{controller_name}/#{Time.now.strftime('%Y%m%d%H%M')}/#{request.remote_ip}") + if record_count.present? + record_count = record_count + 1 + else + record_count = 1 + end + tip_exception("非法请求") if record_count > 100 + + Rails.cache.write("request/#{controller_name}/#{Time.now.strftime('%Y%m%d%H%M')}/#{request.remote_ip}", record_count, expires_in: 1.minute) + rescue + + end + end end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 55c31918a..bcbe031b6 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -9,6 +9,7 @@ class ProjectsController < ApplicationController before_action :load_repository, except: %i[index group_type_list migrate create recommend banner_recommend] before_action :authorizate_user_can_edit_project!, only: %i[update] before_action :project_public?, only: %i[fork_users praise_users watch_users] + before_action :request_limit, only: %i[index] def menu_list menu = [] @@ -42,11 +43,11 @@ class ProjectsController < ApplicationController if category_id.blank? && params[:search].blank? && params[:topic_id].blank? # 默认查询时count性能问题处理 ProjectCategory.sum("projects_count") - Project.visible.joins("left join organization_extensions on organization_extensions.organization_id = projects.user_id").where("organization_extensions.visibility =2").count - elsif params[:search].present? || params[:topic_id].present? + elsif params[:search].present? || params[:topic_id].present? @projects.total_count else - cate = ProjectCategory.find_by(id: category_id) - cate&.projects_count || 0 + cate = ProjectCategory.find_by(id: category_id) + cate&.projects_count || 0 end end @@ -64,16 +65,16 @@ class ProjectsController < ApplicationController def migrate Projects::MigrateForm.new(mirror_params).validate! - @project = + @project = if EduSetting.get("mirror_address").to_s.include?("github") && enable_accelerator?(mirror_params[:clone_addr]) source_clone_url = mirror_params[:clone_addr] uid_logger("########## 已动加速器 ##########") result = Gitea::Accelerator::MigrateService.call(mirror_params) if result[:status] == :success Rails.logger.info "########## 加速镜像成功 ########## " - Projects::MigrateService.call(current_user, - mirror_params.merge(source_clone_url: source_clone_url, - clone_addr: accelerator_url(mirror_params[:repository_name]))) + Projects::MigrateService.call(current_user, + mirror_params.merge(source_clone_url: source_clone_url, + clone_addr: accelerator_url(mirror_params[:repository_name]))) else Projects::MigrateService.call(current_user, mirror_params) end @@ -95,7 +96,7 @@ class ProjectsController < ApplicationController # result = Gitea::Repository::Branches::ListService.call(@owner, @project.identifier) result = Gitea::Repository::Branches::ListNameService.call(@owner, @project.identifier, params[:name]) - @branches = result.is_a?(Hash) ? (result.key?(:status) ? [] : result) : result + @branches = result.is_a?(Hash) ? (result.key?(:status) ? [] : result) : result end def branches_slice @@ -129,7 +130,7 @@ class ProjectsController < ApplicationController ActiveRecord::Base.transaction do # TODO: # 临时特殊处理修改website、lesson_url操作方法 - if project_params.has_key?("website") + if project_params.has_key?("website") if params[:project_topic_names].is_a?(Array) ProjectTopicRalate.where(project: @project).destroy_all params[:project_topic_names].each do |name| @@ -145,11 +146,11 @@ class ProjectsController < ApplicationController } Gitea::Repository::UpdateService.call(@owner, @project.identifier, gitea_params) else - validate_params = project_params.slice(:name, :description, - :project_category_id, :project_language_id, :private, :identifier) - + validate_params = project_params.slice(:name, :description, + :project_category_id, :project_language_id, :private, :identifier) + Projects::UpdateForm.new(validate_params.merge(user_id: @project.user_id, project_identifier: @project.identifier, project_name: @project.name)).validate! - + private = @project.forked_from_project.present? ? !@project.forked_from_project.is_public : params[:private] || false new_project_params = project_params.except(:private).merge(is_public: !private) @@ -162,7 +163,7 @@ class ProjectsController < ApplicationController name: @project.identifier } gitea_repo = Gitea::Repository::UpdateService.call(@owner, @project&.repository&.identifier, gitea_params) - @project.repository.update_attributes({hidden: gitea_repo["private"], identifier: gitea_repo["name"]}) + @project.repository.update_attributes({ hidden: gitea_repo["private"], identifier: gitea_repo["name"] }) # 更新对应所属分类下的项目数量(私有) before_is_public = @project.previous_changes[:is_public].present? ? @project.previous_changes[:is_public][0] : @project.is_public after_is_public = @project.previous_changes[:is_public].present? ? @project.previous_changes[:is_public][1] : @project.is_public @@ -203,13 +204,13 @@ class ProjectsController < ApplicationController def quit user_is_admin = current_user.admin? || @project.manager?(current_user) - if !user_is_admin && @project.member(current_user.id) && @project.forge? + if !user_is_admin && @project.member(current_user.id) && @project.forge? ActiveRecord::Base.transaction do Projects::DeleteMemberInteractor.call(@project.owner, @project, current_user) SendTemplateMessageJob.perform_later('ProjectMemberLeft', current_user.id, current_user.id, @project.id) if Site.has_notice_menu? render_ok end - else + else render_forbidden('你不能退出该仓库') end rescue Exception => e @@ -273,7 +274,7 @@ class ProjectsController < ApplicationController if @project_detail.save! attachment_ids = Array(params[:attachment_ids]) logger.info "=============> #{Array(params[:attachment_ids])}" - @attachments = Attachment.where(id: attachment_ids) + @attachments = Attachment.where(id: attachment_ids) @attachments.update_all( container_id: @project_detail.id, container_type: @project_detail.model_name.name, @@ -286,6 +287,7 @@ class ProjectsController < ApplicationController private + def project_params params.permit(:user_id, :name, :description, :repository_name, :website, :lesson_url, :default_branch, :identifier, :project_category_id, :project_language_id, :license_id, :ignore_id, :private, From 9f40886c45f15bfbfc757fdfebb2ee25b0363c69 Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Thu, 8 Jun 2023 13:58:07 +0800 Subject: [PATCH 15/27] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E9=99=90=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/application_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index be17a4370..d29d6d798 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1172,7 +1172,7 @@ class ApplicationController < ActionController::Base else record_count = 1 end - tip_exception("非法请求") if record_count > 100 + normal_status("请求太快,请稍后再试。") if record_count > 100 Rails.cache.write("request/#{controller_name}/#{Time.now.strftime('%Y%m%d%H%M')}/#{request.remote_ip}", record_count, expires_in: 1.minute) rescue From 18a48337595af73300796474f7e627a5f9e505fd Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Thu, 8 Jun 2023 14:00:06 +0800 Subject: [PATCH 16/27] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E9=99=90=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/application_controller.rb | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index d29d6d798..5dc043a81 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1165,19 +1165,15 @@ class ApplicationController < ActionController::Base # 接口限流,请求量大有性能问题 def request_limit - begin - record_count = Rails.cache.read("request/#{controller_name}/#{Time.now.strftime('%Y%m%d%H%M')}/#{request.remote_ip}") - if record_count.present? - record_count = record_count + 1 - else - record_count = 1 - end - normal_status("请求太快,请稍后再试。") if record_count > 100 - - Rails.cache.write("request/#{controller_name}/#{Time.now.strftime('%Y%m%d%H%M')}/#{request.remote_ip}", record_count, expires_in: 1.minute) - rescue - + record_count = Rails.cache.read("request/#{controller_name}/#{Time.now.strftime('%Y%m%d%H%M')}/#{request.remote_ip}") + if record_count.present? + record_count = record_count + 1 + else + record_count = 1 end + tip_exception("请求太快,请稍后再试。") if record_count > 100 + + Rails.cache.write("request/#{controller_name}/#{Time.now.strftime('%Y%m%d%H%M')}/#{request.remote_ip}", record_count, expires_in: 1.minute) end end From 74de1cf78fcf26346a5fc394dcef7cb5177fd3b1 Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Thu, 8 Jun 2023 15:55:56 +0800 Subject: [PATCH 17/27] =?UTF-8?q?fixed=20=E7=BB=84=E7=BB=87=E5=A4=9A?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E5=88=A4=E6=96=AD=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/organization.rb | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app/models/organization.rb b/app/models/organization.rb index 75a2db971..baf85fc03 100644 --- a/app/models/organization.rb +++ b/app/models/organization.rb @@ -126,14 +126,24 @@ class Organization < Owner def is_only_admin?(user_id) team_users.joins(:team).where(user_id: user_id, teams: {authorize: %w(admin)}).present? + roles = has_roles(user_id) + roles.size > 1 ? false : roles.include?("admin") end def is_only_write?(user_id) - team_users.joins(:team).where(user_id: user_id, teams: {authorize: %w(write)}).present? + # team_users.joins(:team).where(user_id: user_id, teams: {authorize: %w(write)}).present? + roles = has_roles(user_id) + roles.size > 1 ? false : roles.include?("write") end def is_only_read?(user_id) - team_users.joins(:team).where(user_id: user_id, teams: {authorize: %w(read)}).present? + # team_users.joins(:team).where(user_id: user_id, teams: {authorize: %w(read)}).present? + roles = has_roles(user_id) + roles.size > 1 ? false : roles.include?("read") + end + + def has_roles(user_id) + teams.joins(:team_users).where("team_users.user_id=?", user_id).pluck("teams.authorize").uniq end # 是不是所有者团队的最后一个成员 From 68be385af0a5e51f39edafd6d4b404f6893c0614 Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Thu, 8 Jun 2023 16:07:01 +0800 Subject: [PATCH 18/27] =?UTF-8?q?fixed=20=E7=BB=84=E7=BB=87=E5=A4=9A?= =?UTF-8?q?=E8=A7=92=E8=89=B2=E5=88=A4=E6=96=AD=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/concerns/project_operable.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/concerns/project_operable.rb b/app/models/concerns/project_operable.rb index 4fee9ea33..9a5efd129 100644 --- a/app/models/concerns/project_operable.rb +++ b/app/models/concerns/project_operable.rb @@ -200,7 +200,7 @@ module ProjectOperable if owner.is_a?(User) managers.exists?(user_id: user.id) || (user.platform == "bot" && BotInstall.joins(:bot).where(bot: { uid: user.id }).where(store_id: self.id).exists?) elsif owner.is_a?(Organization) - managers.exists?(user_id: user.id) || owner.is_owner?(user.id) || (owner.is_only_admin?(user.id) && (teams.pluck(:id) & user.teams.pluck(:id)).size > 0) || (user.platform == "bot" && BotInstall.joins(:bot).where(bot: { uid: user.id }).where(store_id: self.id).exists?) + managers.exists?(user_id: user.id) || owner.is_owner?(user.id) || (owner.is_admin?(user.id) && (teams.pluck(:id) & user.teams.pluck(:id)).size > 0) || (user.platform == "bot" && BotInstall.joins(:bot).where(bot: { uid: user.id }).where(store_id: self.id).exists?) else false end @@ -212,7 +212,7 @@ module ProjectOperable if owner.is_a?(User) developers.exists?(user_id: user.id) || (user.platform == "bot" && BotInstall.joins(:bot).where(bot: { uid: user.id }).where(store_id: self.id).exists?) elsif owner.is_a?(Organization) - developers.exists?(user_id: user.id) || (owner.is_only_write?(user.id) && (teams.pluck(:id) & user.teams.pluck(:id)).size > 0) || (user.platform == "bot" && BotInstall.joins(:bot).where(bot: { uid: user.id }).where(store_id: self.id).exists?) + developers.exists?(user_id: user.id) || (owner.is_write?(user.id) && (teams.pluck(:id) & user.teams.pluck(:id)).size > 0) || (user.platform == "bot" && BotInstall.joins(:bot).where(bot: { uid: user.id }).where(store_id: self.id).exists?) else false end From 289e024253656ed3fd2a360607044d1393788146 Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Thu, 8 Jun 2023 16:49:35 +0800 Subject: [PATCH 19/27] =?UTF-8?q?fixed=20=E6=96=B0=E5=BB=BA=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE=E6=A0=87?= =?UTF-8?q?=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/projects_controller.rb | 1 + app/jobs/migrate_remote_repository_job.rb | 1 + app/jobs/update_project_topic_job.rb | 32 +++++++++++++++++++++++ lib/tasks/init_project_topic.rake | 2 +- 4 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 app/jobs/update_project_topic_job.rb diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index bcbe031b6..550716eaa 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -56,6 +56,7 @@ class ProjectsController < ApplicationController Projects::CreateForm.new(project_params).validate! @project = Projects::CreateService.new(current_user, project_params).call OpenProjectDevOpsJob.set(wait: 5.seconds).perform_later(@project&.id, current_user.id) + UpdateProjectTopicJob.set(wait: 5.seconds).perform_later(@project.id) if @project.id.present? end rescue Exception => e uid_logger_error(e.message) diff --git a/app/jobs/migrate_remote_repository_job.rb b/app/jobs/migrate_remote_repository_job.rb index 696607ae3..428f9a726 100644 --- a/app/jobs/migrate_remote_repository_job.rb +++ b/app/jobs/migrate_remote_repository_job.rb @@ -16,6 +16,7 @@ class MigrateRemoteRepositoryJob < ApplicationJob 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: 5.seconds).perform_later(project_id) if project_id.present? puts "############ mirror status: #{repo.mirror.status} ############" else repo&.mirror&.failed! diff --git a/app/jobs/update_project_topic_job.rb b/app/jobs/update_project_topic_job.rb new file mode 100644 index 000000000..dfa485ff5 --- /dev/null +++ b/app/jobs/update_project_topic_job.rb @@ -0,0 +1,32 @@ +class UpdateProjectTopicJob < ApplicationJob + include ProjectsHelper + + queue_as :message + + def perform(project_id) + project = Project.find_by(id: project_id) + return if project.blank? + begin + languages = $gitea_client.get_repos_languages_by_owner_repo(project.owner.login, project.identifier) + topic_count = 0 + if project.project_category_id.present? + project_topic = ProjectTopic.find_or_create_by!(name: project.project_category.name.downcase) + project_topic_ralate = project_topic.project_topic_ralates.find_or_create_by!(project_id: project.id) + if project_topic.present? && project_topic_ralate.present? + topic_count +=1 + end + end + languages.each do |k, _| + next if topic_count >= 3 + project_topic = ProjectTopic.find_or_create_by!(name: k.downcase) + project_topic_ralate = project_topic.project_topic_ralates.find_or_create_by!(project_id: project.id) + if project_topic.present? && project_topic_ralate.present? + topic_count +=1 + end + end + rescue + + end + end + +end \ No newline at end of file diff --git a/lib/tasks/init_project_topic.rake b/lib/tasks/init_project_topic.rake index f6fcd4b96..5255a4aa2 100644 --- a/lib/tasks/init_project_topic.rake +++ b/lib/tasks/init_project_topic.rake @@ -4,7 +4,7 @@ namespace :init_project_topic do desc "Init Project Topic for Project" task project: :environment do - Project.order(created_at: :desc).find_each do |p| + Project.where(platform: 'forge').order(created_at: :desc).find_each do |p| next unless p.owner.present? next if p.project_topics.size >= 3 begin From c7b61775c27f40a9ee5fccea374b3b4b1e518acf Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Thu, 8 Jun 2023 17:05:48 +0800 Subject: [PATCH 20/27] =?UTF-8?q?fixed=20=E6=96=B0=E5=BB=BA=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE=E6=A0=87?= =?UTF-8?q?=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/projects_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 550716eaa..0d7caba05 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -56,7 +56,7 @@ class ProjectsController < ApplicationController Projects::CreateForm.new(project_params).validate! @project = Projects::CreateService.new(current_user, project_params).call OpenProjectDevOpsJob.set(wait: 5.seconds).perform_later(@project&.id, current_user.id) - UpdateProjectTopicJob.set(wait: 5.seconds).perform_later(@project.id) if @project.id.present? + UpdateProjectTopicJob.perform_later(@project.id) if @project.id.present? end rescue Exception => e uid_logger_error(e.message) From cf4b5e9ab8f54860ea8b3a8145718aa6d422d532 Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Thu, 8 Jun 2023 17:08:58 +0800 Subject: [PATCH 21/27] =?UTF-8?q?fixed=20=E6=96=B0=E5=BB=BA=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E4=B8=8D=E5=BB=B6=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/jobs/migrate_remote_repository_job.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/jobs/migrate_remote_repository_job.rb b/app/jobs/migrate_remote_repository_job.rb index 428f9a726..73228aa20 100644 --- a/app/jobs/migrate_remote_repository_job.rb +++ b/app/jobs/migrate_remote_repository_job.rb @@ -16,7 +16,7 @@ class MigrateRemoteRepositoryJob < ApplicationJob 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: 5.seconds).perform_later(project_id) if project_id.present? + UpdateProjectTopicJob.perform_later(project_id) if project_id.present? puts "############ mirror status: #{repo.mirror.status} ############" else repo&.mirror&.failed! From 52cefc5a5144e9182c4502dd68fd9e2491d6b08d Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Thu, 8 Jun 2023 17:16:01 +0800 Subject: [PATCH 22/27] =?UTF-8?q?fixed=20=E6=96=B0=E5=BB=BA=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E4=B8=8D=E5=BB=B6=E6=97=B6=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/jobs/update_project_topic_job.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/jobs/update_project_topic_job.rb b/app/jobs/update_project_topic_job.rb index dfa485ff5..52341d672 100644 --- a/app/jobs/update_project_topic_job.rb +++ b/app/jobs/update_project_topic_job.rb @@ -8,6 +8,7 @@ class UpdateProjectTopicJob < ApplicationJob return if project.blank? begin languages = $gitea_client.get_repos_languages_by_owner_repo(project.owner.login, project.identifier) + puts "#{project.owner.login}/#{project.identifier} get_repos_languages:#{languages}" topic_count = 0 if project.project_category_id.present? project_topic = ProjectTopic.find_or_create_by!(name: project.project_category.name.downcase) @@ -24,8 +25,8 @@ class UpdateProjectTopicJob < ApplicationJob topic_count +=1 end end - rescue - + rescue => e + puts "get_repos_languages: error:#{e.message}" end end From 635ca7ca4be5fe61b3124b09fbdc3b99d000a57b Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Thu, 8 Jun 2023 17:18:48 +0800 Subject: [PATCH 23/27] =?UTF-8?q?fixed=20=E6=96=B0=E5=BB=BA=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE=E6=A0=87?= =?UTF-8?q?=E7=AD=BE,=E8=AF=AD=E8=A8=80=E8=8E=B7=E5=8F=96=E5=BF=85?= =?UTF-8?q?=E9=9C=80=E5=BB=B6=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/jobs/migrate_remote_repository_job.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/jobs/migrate_remote_repository_job.rb b/app/jobs/migrate_remote_repository_job.rb index 73228aa20..16f86e6ac 100644 --- a/app/jobs/migrate_remote_repository_job.rb +++ b/app/jobs/migrate_remote_repository_job.rb @@ -16,7 +16,7 @@ class MigrateRemoteRepositoryJob < ApplicationJob 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.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} ############" else repo&.mirror&.failed! From 7bebe42c49a13ba7e77353d420fa7463051e509e Mon Sep 17 00:00:00 2001 From: xxqfamous Date: Thu, 8 Jun 2023 17:28:09 +0800 Subject: [PATCH 24/27] =?UTF-8?q?fixed=20=E5=B1=9E=E6=80=A7=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/user.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index dcd13b8ed..3c8795bc0 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -877,7 +877,7 @@ class User < Owner # 重写gitea_token,当用户为bot类型时,替换成管理员token def gitea_token - if self.platform == "bot" + if self.respond_to?('platform') && self.platform == "bot" GiteaService.gitea_config[:admin_token] else self['gitea_token'] From 8be1373bf900ab3d28e26876dce719f709f9b262 Mon Sep 17 00:00:00 2001 From: xxq250 Date: Thu, 8 Jun 2023 17:54:32 +0800 Subject: [PATCH 25/27] =?UTF-8?q?fixed=20=E5=B1=9E=E6=80=A7=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/user.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index 3c8795bc0..90893defd 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -853,8 +853,8 @@ class User < Owner end def profile_is_completed? - # self.nickname.present? && self.mail.present? - true + #self.nickname.present? && self.mail.present? + self.mail.present? end def trace_token From caa5ad5ac4af5a2a21ea579cb362d4ad1758a0b9 Mon Sep 17 00:00:00 2001 From: xxq250 Date: Thu, 8 Jun 2023 18:01:44 +0800 Subject: [PATCH 26/27] =?UTF-8?q?fixed=20=E6=96=B0=E5=BB=BA=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE=E6=A0=87?= =?UTF-8?q?=E7=AD=BE,=E8=AF=AD=E8=A8=80=E8=8E=B7=E5=8F=96=E5=BF=85?= =?UTF-8?q?=E9=9C=80=E5=BB=B6=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/jobs/migrate_remote_repository_job.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/jobs/migrate_remote_repository_job.rb b/app/jobs/migrate_remote_repository_job.rb index 16f86e6ac..2493bff01 100644 --- a/app/jobs/migrate_remote_repository_job.rb +++ b/app/jobs/migrate_remote_repository_job.rb @@ -21,6 +21,7 @@ class MigrateRemoteRepositoryJob < ApplicationJob else repo&.mirror&.failed! end - BroadcastMirrorRepoMsgJob.perform_later(repo.id) unless repo&.mirror.waiting? + # UpdateProjectTopicJob 中语言要延迟1S才能获取 + BroadcastMirrorRepoMsgJob.set(wait: 1.seconds).perform_later(repo.id) unless repo&.mirror.waiting? end end From 66004f34571bcf7ec8740109a37e4cad334686e8 Mon Sep 17 00:00:00 2001 From: xxq250 Date: Fri, 9 Jun 2023 09:39:07 +0800 Subject: [PATCH 27/27] gitea-hat-client log --- config/initializers/gitea_client.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/initializers/gitea_client.rb b/config/initializers/gitea_client.rb index 15777ac30..9a490fbb5 100644 --- a/config/initializers/gitea_client.rb +++ b/config/initializers/gitea_client.rb @@ -16,5 +16,5 @@ $gitea_hat_client = Gitea::Api::Hat::Client.new({ hat_base_url: gitea_config[:hat_base_url], username: gitea_config[:access_key_id], password: gitea_config[:access_key_secret], - log_filepath: "log/gitea-client.log" + log_filepath: "log/gitea-hat-client.log" }) \ No newline at end of file