From c0e3a91a46e2a33521c1ca89769bcb28c8e79ac3 Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 29 Nov 2021 09:32:39 +0800 Subject: [PATCH 01/10] fix: page 500 --- public/500.html | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/public/500.html b/public/500.html index 7fd7c940..87cb2ae9 100644 --- a/public/500.html +++ b/public/500.html @@ -95,9 +95,8 @@ If you continue to experience problems please contact your Trustie administrator

服务器异常,请稍后重试

- 您可尝试刷新页面返回首页,也可以通过 - 刷新页面返回首页,也可以通过QQ向我们反馈
From 7586a0fb21eebbc8b18b08a7f4ae1531a2ace984 Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 29 Nov 2021 10:27:41 +0800 Subject: [PATCH 02/10] fix: change issue tag change size --- app/controllers/issues_controller.rb | 30 +++++++++++++------ app/controllers/pull_requests_controller.rb | 27 ++++++++++++----- app/services/pull_requests/create_service.rb | 8 +++-- app/views/pull_requests/_detail.json.jbuilder | 1 + 4 files changed, 48 insertions(+), 18 deletions(-) diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 45a8530a..96e186b4 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -125,9 +125,15 @@ class IssuesController < ApplicationController end end if params[:issue_tag_ids].present? - params[:issue_tag_ids].each do |tag| - IssueTagsRelate.create!(issue_id: @issue.id, issue_tag_id: tag) - end + if params[:issue_tag_ids].is_a?(Array) && params[:issue_tag_ids].size > 1 + return normal_status(-1, "最多只能创建一个标记。") + elsif params[:issue_tag_ids].is_a?(Array) && params[:issue_tag_ids].size == 1 + params[:issue_tag_ids].each do |tag| + IssueTagsRelate.create!(issue_id: @issue.id, issue_tag_id: tag) + end + else + return normal_status(-1, "请输入正确的标记。") + end end if params[:assigned_to_id].present? Tiding.create!(user_id: params[:assigned_to_id], trigger_user_id: current_user.id, @@ -146,7 +152,7 @@ class IssuesController < ApplicationController Rails.logger.info "[ATME] maybe to at such users: #{@atme_receivers.pluck(:login)}" AtmeService.call(current_user, @atme_receivers, @issue) if @atme_receivers.size > 0 - render json: {status: 0, message: "创建成", id: @issue.id} + render json: {status: 0, message: "创建成功", id: @issue.id} else normal_status(-1, "创建失败") end @@ -165,11 +171,17 @@ class IssuesController < ApplicationController last_token = @issue.token last_status_id = @issue.status_id @issue&.issue_tags_relates&.destroy_all if params[:issue_tag_ids].blank? - if params[:issue_tag_ids].present? && !@issue&.issue_tags_relates.where(issue_tag_id: params[:issue_tag_ids]).exists? - @issue&.issue_tags_relates&.destroy_all - params[:issue_tag_ids].each do |tag| - IssueTagsRelate.create(issue_id: @issue.id, issue_tag_id: tag) - end + if params[:issue_tag_ids].present? + if params[:issue_tag_ids].is_a?(Array) && params[:issue_tag_ids].size > 1 + return normal_status(-1, "最多只能创建一个标记。") + elsif params[:issue_tag_ids].is_a?(Array) && params[:issue_tag_ids].size == 1 + @issue&.issue_tags_relates&.destroy_all + params[:issue_tag_ids].each do |tag| + IssueTagsRelate.create!(issue_id: @issue.id, issue_tag_id: tag) + end + else + return normal_status(-1, "请输入正确的标记。") + end end issue_files = params[:attachment_ids] diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb index 86b87717..39bfadb4 100644 --- a/app/controllers/pull_requests_controller.rb +++ b/app/controllers/pull_requests_controller.rb @@ -91,10 +91,16 @@ class PullRequestsController < ApplicationController @issue&.issue_tags_relates&.destroy_all if params[:issue_tag_ids].blank? if params[:issue_tag_ids].present? && !@issue&.issue_tags_relates.where(issue_tag_id: params[:issue_tag_ids]).exists? - @issue&.issue_tags_relates&.destroy_all - params[:issue_tag_ids].each do |tag| - IssueTagsRelate.create(issue_id: @issue.id, issue_tag_id: tag) - end + if params[:issue_tag_ids].is_a?(Array) && params[:issue_tag_ids].size > 1 + return normal_status(-1, "最多只能创建一个标记。") + elsif params[:issue_tag_ids].is_a?(Array) && params[:issue_tag_ids].size == 1 + @issue&.issue_tags_relates&.destroy_all + params[:issue_tag_ids].each do |tag| + IssueTagsRelate.create!(issue_id: @issue.id, issue_tag_id: tag) + end + else + return normal_status(-1, "请输入正确的标记。") + end end if @issue.update_attributes(@issue_params) @@ -104,9 +110,16 @@ class PullRequestsController < ApplicationController if gitea_pull[:status] === :success if params[:issue_tag_ids].present? - params[:issue_tag_ids].each do |tag| - IssueTagsRelate.create(issue_id: @issue.id, issue_tag_id: tag) - end + if params[:issue_tag_ids].is_a?(Array) && params[:issue_tag_ids].size > 1 + return normal_status(-1, "最多只能创建一个标记。") + elsif params[:issue_tag_ids].is_a?(Array) && params[:issue_tag_ids].size == 1 + @issue&.issue_tags_relates&.destroy_all + params[:issue_tag_ids].each do |tag| + IssueTagsRelate.create!(issue_id: @issue.id, issue_tag_id: tag) + end + else + return normal_status(-1, "请输入正确的标记。") + end end if params[:status_id].to_i == 5 @issue.issue_times.update_all(end_time: Time.now) diff --git a/app/services/pull_requests/create_service.rb b/app/services/pull_requests/create_service.rb index 67766be6..6789f904 100644 --- a/app/services/pull_requests/create_service.rb +++ b/app/services/pull_requests/create_service.rb @@ -58,8 +58,12 @@ class PullRequests::CreateService < ApplicationService end def save_issue_tags_relates! - issue_tag_ids.each do |tag| - IssueTagsRelate.create!(issue_id: pull_issue.id, issue_tag_id: tag) + if issue_tag_ids.size > 1 + raise "最多只能创建一个标记。" + else + issue_tag_ids.each do |tag| + IssueTagsRelate.create!(issue_id: pull_issue.id, issue_tag_id: tag) + end end end diff --git a/app/views/pull_requests/_detail.json.jbuilder b/app/views/pull_requests/_detail.json.jbuilder index 06c6377a..5c934742 100644 --- a/app/views/pull_requests/_detail.json.jbuilder +++ b/app/views/pull_requests/_detail.json.jbuilder @@ -1,5 +1,6 @@ pr = issue.pull_request json.pull_request_id pr.id +json.pull_request_number pr.gitea_number json.pull_request_status pr.status json.pull_request_head pr.head json.pull_request_base pr.base From c0a4f8f4ec14f0cedffb203961d636285711faf1 Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 29 Nov 2021 10:53:59 +0800 Subject: [PATCH 03/10] fix: create pull request need compare --- app/controllers/pull_requests_controller.rb | 2 ++ app/services/pull_requests/create_service.rb | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb index 39bfadb4..b897a1f9 100644 --- a/app/controllers/pull_requests_controller.rb +++ b/app/controllers/pull_requests_controller.rb @@ -70,6 +70,8 @@ class PullRequestsController < ApplicationController raise ActiveRecord::Rollback end end + rescue => e + normal_status(-1, e.message) end def edit diff --git a/app/services/pull_requests/create_service.rb b/app/services/pull_requests/create_service.rb index 6789f904..844df5cf 100644 --- a/app/services/pull_requests/create_service.rb +++ b/app/services/pull_requests/create_service.rb @@ -13,6 +13,7 @@ class PullRequests::CreateService < ApplicationService def call ActiveRecord::Base.transaction do validate! + compare_head_base! save_pull_issue! save_pull_request! save_issue_tags_relates! @@ -33,7 +34,7 @@ class PullRequests::CreateService < ApplicationService assigned_to_id: @params[:assigned_to_id], fixed_version_id: @params[:fixed_version_id], issue_tags_value: @params[:issue_tag_ids].present? ? @params[:issue_tag_ids].join(",") : "", - priority_id: @params[:priority_id] || "2", + priority_id: @params[:priority_id], issue_classify: "pull_request", issue_type: @params[:issue_type] || "1", tracker_id: 2, @@ -155,6 +156,11 @@ class PullRequests::CreateService < ApplicationService raise @pull_request.errors.full_messages.join(", ") unless pull_request.valid? end + def compare_head_base! + compare_result = Gitea::Repository::Commits::CompareService.call(@owner.login, @project.identifier, @params[:base], @params[:head], @current_user.gitea_token) + raise '分支内容相同,无需创建合并请求' if compare_result["Commits"].blank? && compare_result["Diff"].blank? + end + def is_original @params[:is_original] || false end From 22f337109023ed9bef505867c42ea666c26dc1c2 Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 29 Nov 2021 11:05:33 +0800 Subject: [PATCH 04/10] fix: change issues priority id default value --- app/controllers/pull_requests_controller.rb | 2 +- app/controllers/repositories_controller.rb | 2 +- app/models/issue.rb | 2 +- .../20211129025810_change_issues_priority_id_default.rb | 5 +++++ 4 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 db/migrate/20211129025810_change_issues_priority_id_default.rb diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb index b897a1f9..c5ce396f 100644 --- a/app/controllers/pull_requests_controller.rb +++ b/app/controllers/pull_requests_controller.rb @@ -288,7 +288,7 @@ class PullRequestsController < ApplicationController assigned_to_id: params[:assigned_to_id], fixed_version_id: params[:fixed_version_id], issue_tags_value: params[:issue_tag_ids].present? ? params[:issue_tag_ids].join(",") : "", - priority_id: params[:priority_id] || "2", + priority_id: params[:priority_id], issue_classify: "pull_request", issue_type: params[:issue_type] || "1", tracker_id: 2, diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 9b94f0d5..caff386f 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -340,7 +340,7 @@ class RepositoriesController < ApplicationController issue_type: "1", tracker_id: 2, status_id: 1, - priority_id: params[:priority_id] || "2" + priority_id: params[:priority_id] } @pull_issue = Issue.new(issue_params) if @pull_issue.save! diff --git a/app/models/issue.rb b/app/models/issue.rb index c642e642..9c195d12 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -11,7 +11,7 @@ # category_id :integer # status_id :integer not null # assigned_to_id :integer -# priority_id :integer not null +# priority_id :integer # fixed_version_id :integer # author_id :integer not null # created_on :datetime diff --git a/db/migrate/20211129025810_change_issues_priority_id_default.rb b/db/migrate/20211129025810_change_issues_priority_id_default.rb new file mode 100644 index 00000000..bdb9cf36 --- /dev/null +++ b/db/migrate/20211129025810_change_issues_priority_id_default.rb @@ -0,0 +1,5 @@ +class ChangeIssuesPriorityIdDefault < ActiveRecord::Migration[5.2] + def change + change_column_null :issues, :priority_id, true + end +end From 9385d346f1b9e6125efc8183749582c4ecce9bc1 Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 29 Nov 2021 14:03:17 +0800 Subject: [PATCH 05/10] fix --- app/services/pull_requests/create_service.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/services/pull_requests/create_service.rb b/app/services/pull_requests/create_service.rb index 844df5cf..3882df0f 100644 --- a/app/services/pull_requests/create_service.rb +++ b/app/services/pull_requests/create_service.rb @@ -157,7 +157,8 @@ class PullRequests::CreateService < ApplicationService end def compare_head_base! - compare_result = Gitea::Repository::Commits::CompareService.call(@owner.login, @project.identifier, @params[:base], @params[:head], @current_user.gitea_token) + head = pull_request.is_original && @params[:merge_user_login] ? "#{@params[:merge_user_login]}/#{@project.identifier}:#{@params[:head]}" : @params[:head] + compare_result = Gitea::Repository::Commits::CompareService.call(@owner.login, @project.identifier, @params[:base], head, @current_user.gitea_token) raise '分支内容相同,无需创建合并请求' if compare_result["Commits"].blank? && compare_result["Diff"].blank? end From d16f290aa62364bf2377b71560ab2b2343325616 Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 29 Nov 2021 14:17:27 +0800 Subject: [PATCH 06/10] fix: create pr validate fork_project_id --- app/services/pull_requests/create_service.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/services/pull_requests/create_service.rb b/app/services/pull_requests/create_service.rb index 3882df0f..1080c540 100644 --- a/app/services/pull_requests/create_service.rb +++ b/app/services/pull_requests/create_service.rb @@ -150,6 +150,7 @@ class PullRequests::CreateService < ApplicationService raise "title参数不能为空" if @params[:title].blank? raise "head参数不能为空" if @params[:head].blank? raise "base参数不能为空" if @params[:base].blank? + raise "fork_project_id参数错误" unless @project.forked_projects.pluck(:id).include?(@params[:fork_project_id]) raise "分支内容相同,无需创建合并请求" if @params[:head] === @params[:base] && !is_original raise "合并请求已存在" if @project&.pull_requests.where(head: @params[:head], base: @params[:base], status: 0, is_original: is_original, fork_project_id: @params[:fork_project_id]).present? raise @pull_issue.errors.full_messages.join(", ") unless pull_issue.valid? From f8654edc3b715bf9a097f2806d18dd8819414571 Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 29 Nov 2021 14:28:13 +0800 Subject: [PATCH 07/10] fix: project labels return success info --- app/controllers/issue_tags_controller.rb | 28 ++++++++++++------------ 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/app/controllers/issue_tags_controller.rb b/app/controllers/issue_tags_controller.rb index dc2ad797..7b3b54a8 100644 --- a/app/controllers/issue_tags_controller.rb +++ b/app/controllers/issue_tags_controller.rb @@ -29,7 +29,7 @@ class IssueTagsController < ApplicationController if title.present? if IssueTag.exists?(name: title, project_id: @project.id) - normal_status(-1, "标签已存在") + normal_status(-1, "项目标记已存在") else ActiveRecord::Base.transaction do begin @@ -37,12 +37,12 @@ class IssueTagsController < ApplicationController if issue_tag.save # gitea_tag = Gitea::Labels::CreateService.new(current_user, @repository.try(:identifier), tag_params).call # if gitea_tag && issue_tag.update_attributes(gid: gitea_tag["id"], gitea_url: gitea_tag["url"]) - # normal_status(0, "标签创建成功") + normal_status(0, "项目标记创建成功!") # else - # normal_status(-1, "标签创建失败") + # normal_status(-1, "项目标记创建失败") # end else - normal_status(-1, "标签创建失败") + normal_status(-1, "项目标记创建失败") end rescue => e puts "create version release error: #{e.message}" @@ -51,7 +51,7 @@ class IssueTagsController < ApplicationController end end else - normal_status(-1, "标签名称不能为空") + normal_status(-1, "项目标记名称不能为空") end end @@ -71,19 +71,19 @@ class IssueTagsController < ApplicationController } if title.present? if IssueTag.exists?(name: title, project_id: @project.id) && (@issue_tag.name != title) - normal_status(-1, "标签已存在") + normal_status(-1, "项目标记已存在") else ActiveRecord::Base.transaction do begin if @issue_tag.update_attributes(tag_params) # gitea_tag = Gitea::Labels::UpdateService.new(current_user, @repository.try(:identifier),@issue_tag.try(:gid), tag_params).call # if gitea_tag - # normal_status(0, "标签更新成功") + # normal_status(0, "项目标记更新成功") # else - # normal_status(-1, "标签更新失败") + # normal_status(-1, "项目标记更新失败") # end else - normal_status(-1, "标签更新失败") + normal_status(-1, "项目标记更新失败") end rescue => e puts "create version release error: #{e.message}" @@ -92,7 +92,7 @@ class IssueTagsController < ApplicationController end end else - normal_status(-1, "标签名称不能为空") + normal_status(-1, "项目标记名称不能为空") end end @@ -102,12 +102,12 @@ class IssueTagsController < ApplicationController if @issue_tag.destroy # issue_tag = Gitea::Labels::DeleteService.new(@user, @repository.try(:identifier), @issue_tag.try(:gid)).call # if issue_tag - # normal_status(0, "标签删除成功") + # normal_status(0, "项目标记删除成功") # else - # normal_status(-1, "标签删除失败") + # normal_status(-1, "项目标记删除失败") # end else - normal_status(-1, "标签删除失败") + normal_status(-1, "项目标记删除失败") end rescue => e puts "create version release error: #{e.message}" @@ -131,7 +131,7 @@ class IssueTagsController < ApplicationController def set_issue_tag @issue_tag = IssueTag.find_by_id(params[:id]) unless @issue_tag.present? - normal_status(-1, "标签不存在") + normal_status(-1, "项目标记不存在") end end From 7499d8af8979dc9c6e90bdb434fc476d330950af Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 29 Nov 2021 14:43:29 +0800 Subject: [PATCH 08/10] fix: project private params to boolean --- app/services/projects/create_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb index 72ad8f16..02588380 100644 --- a/app/services/projects/create_service.rb +++ b/app/services/projects/create_service.rb @@ -60,6 +60,6 @@ class Projects::CreateService < ApplicationService # end def repo_is_public - params[:private].blank? ? true : !params[:private] + params[:private].blank? ? true : !(ActiveModel::Type::Boolean.new.cast(params[:private]).nil? ? false : ActiveModel::Type::Boolean.new.cast(params[:private])) end end From ea156cec7e931cee9b387dd99dea7145895017b1 Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 29 Nov 2021 15:20:18 +0800 Subject: [PATCH 09/10] fix: download type add video type --- app/helpers/repositories_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/helpers/repositories_helper.rb b/app/helpers/repositories_helper.rb index cc50c8d6..21ab6fb4 100644 --- a/app/helpers/repositories_helper.rb +++ b/app/helpers/repositories_helper.rb @@ -10,7 +10,7 @@ module RepositoriesHelper end def download_type(str) - default_type = %w(xlsx xls ppt pptx pdf zip 7z rar exe pdb obj idb RData rdata doc docx mpp vsdx dot otf eot ttf woff woff2) + default_type = %w(xlsx xls ppt pptx pdf zip 7z rar exe pdb obj idb RData rdata doc docx mpp vsdx dot otf eot ttf woff woff2 mp4 mov wmv flv mpeg avi avchd webm mkv) default_type.include?(str&.downcase) end From de995c8714ea69ebf295c9bd0321cb6618ec60c7 Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 29 Nov 2021 15:43:47 +0800 Subject: [PATCH 10/10] fix: merge conflict --- app/controllers/repositories_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index caff386f..9b94f0d5 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -340,7 +340,7 @@ class RepositoriesController < ApplicationController issue_type: "1", tracker_id: 2, status_id: 1, - priority_id: params[:priority_id] + priority_id: params[:priority_id] || "2" } @pull_issue = Issue.new(issue_params) if @pull_issue.save!