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
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..c5ce396f 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
@@ -91,10 +93,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 +112,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)
@@ -273,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/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
diff --git a/app/models/issue.rb b/app/models/issue.rb
index f1e2a2d0..793cd460 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/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
diff --git a/app/services/pull_requests/create_service.rb b/app/services/pull_requests/create_service.rb
index 67766be6..1080c540 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,
@@ -58,8 +59,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
@@ -145,12 +150,19 @@ 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?
raise @pull_request.errors.full_messages.join(", ") unless pull_request.valid?
end
+ def compare_head_base!
+ 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
+
def is_original
@params[:is_original] || false
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
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
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