mirror of
https://gitlink.org.cn/Gitlink/forgeplus.git
synced 2026-05-02 19:30:48 +08:00
Merge branch 'standalone_develop' into pre_trustie_server
This commit is contained in:
@@ -67,9 +67,9 @@ class Action::NodeInputsController < ApplicationController
|
||||
|
||||
def node_input_params
|
||||
if params.require(:action_node_input)
|
||||
params.require(:action_node_input).permit(:name, :input_type, :description, :is_required, :sort_no)
|
||||
params.require(:action_node_input).permit(:name, :input_type, :description, :is_required, :sort_no, :default_value)
|
||||
else
|
||||
params.permit(:name, :input_type, :description, :is_required, :sort_no)
|
||||
params.permit(:name, :input_type, :description, :is_required, :sort_no, :default_value)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -71,7 +71,7 @@ class Api::Pm::SprintIssuesController < Api::Pm::BaseController
|
||||
begin
|
||||
case complete_params[:complete_type].to_i
|
||||
when 1
|
||||
@issues.update_all(status_id: 5)
|
||||
@issues.update_all(status_id: 5, due_date: Time.now)
|
||||
when 2
|
||||
@issues.update_all(pm_sprint_id: 0)
|
||||
when 3
|
||||
|
||||
@@ -47,6 +47,7 @@ class Api::V1::Projects::PipelinesController < Api::V1::BaseController
|
||||
interactor = sha.present? ? Gitea::UpdateFileInteractor.call(current_user.gitea_token, @owner.login, content_params("update").merge(sha: sha)) : Gitea::CreateFileInteractor.call(current_user.gitea_token, @owner.login, content_params("create"))
|
||||
tip_exception(interactor.error) unless interactor.success?
|
||||
file = interactor.result
|
||||
@pipeline.save
|
||||
render_ok({ pipeline_yaml: pipeline_yaml, pipeline_name: params[:pipeline_name], file_name: @pipeline.file_name, sha: sha.present? ? sha : file['content']['sha'] })
|
||||
end
|
||||
|
||||
@@ -79,8 +80,8 @@ class Api::V1::Projects::PipelinesController < Api::V1::BaseController
|
||||
|
||||
def destroy
|
||||
@pipeline = Action::Pipeline.find(params[:id])
|
||||
if pipeline
|
||||
interactor = Gitea::DeleteFileInteractor.call(current_user.gitea_token, @owner.login, content_params("update"))
|
||||
if @pipeline
|
||||
interactor = Gitea::DeleteFileInteractor.call(current_user.gitea_token, @owner.login, del_content_params.merge(identifier: @project.identifier))
|
||||
tip_exception(interactor.error) unless interactor.success?
|
||||
@pipeline.destroy!
|
||||
end
|
||||
@@ -114,7 +115,7 @@ class Api::V1::Projects::PipelinesController < Api::V1::BaseController
|
||||
|
||||
def show
|
||||
@pipeline = Action::Pipeline.find_by(id: params[:id])
|
||||
@pipeline = Action::Pipeline.new(id: 0, pipeline_name: "test-ss", yaml: build_test_yaml) if @pipeline.blank?
|
||||
# @pipeline = Action::Pipeline.new(id: 0, pipeline_name: "test-ss", yaml: build_test_yaml) if @pipeline.blank?
|
||||
end
|
||||
|
||||
def build_pipeline_yaml_new(pipeline_name, pipeline_json)
|
||||
@@ -172,6 +173,15 @@ class Api::V1::Projects::PipelinesController < Api::V1::BaseController
|
||||
}
|
||||
end
|
||||
|
||||
def del_content_params(opt)
|
||||
{
|
||||
filepath: ".gitea/workflows/#{@pipeline.pipeline_name}.yml",
|
||||
base64_filepath: Base64.encode64(".gitea/workflows/#{@pipeline.pipeline_name}.yml").gsub(/\n/, ''),
|
||||
branch: @pipeline.branch,
|
||||
sha: get_pipeline_file_sha(@pipeline.file_name, @pipeline.branch)
|
||||
}
|
||||
end
|
||||
|
||||
def build_nodes(params_nodes)
|
||||
steps_nodes = []
|
||||
params_nodes.each do |input_node|
|
||||
|
||||
@@ -421,24 +421,6 @@ class ApplicationController < ActionController::Base
|
||||
"#{edu_setting('git_address_domain')}/#{repo_path}"
|
||||
end
|
||||
|
||||
# 通关后,把最后一次成功的代码存到数据库
|
||||
# type 0 创始内容, 1 最新内容
|
||||
# def game_passed_code(path, myshixun, game_id)
|
||||
# # 如果代码窗口是隐藏的,则不用保存代码
|
||||
# return if myshixun.shixun.hide_code || myshixun.shixun.vnc
|
||||
# file_content = git_fle_content myshixun.repo_path, path
|
||||
# #unless file_content.present?
|
||||
# # raise("获取文件代码异常")
|
||||
# #end
|
||||
# logger.info("#######game_id:#{game_id}, file_content:#{file_content}")
|
||||
# game_code = GameCode.where(:game_id => game_id, :path => path).first
|
||||
# if game_code.nil?
|
||||
# GameCode.create!(:game_id => game_id, :new_code => file_content, :path => path)
|
||||
# else
|
||||
# game_code.update_attributes!(:new_code => file_content)
|
||||
# end
|
||||
# end
|
||||
|
||||
# Post请求
|
||||
def uri_post(uri, params)
|
||||
begin
|
||||
@@ -530,112 +512,6 @@ class ApplicationController < ActionController::Base
|
||||
end
|
||||
|
||||
|
||||
# 实训主类别列表,自带描述
|
||||
def shixun_main_type
|
||||
list = []
|
||||
mirrors = MirrorRepository.select([:id, :type_name, :description, :name]).published_main_mirror
|
||||
mirrors.try(:each) do |mirror|
|
||||
list << {id: mirror.id, type_name: mirror.type_name, description: mirror.try(:description), mirror_name: mirror.name}
|
||||
end
|
||||
list
|
||||
end
|
||||
|
||||
# 小类别列表
|
||||
def shixun_small_type
|
||||
list = []
|
||||
mirrors = MirrorRepository.select([:id, :type_name, :description, :name]).published_small_mirror
|
||||
mirrors.try(:each) do |mirror|
|
||||
list << {id: mirror.id, type_name: mirror.type_name, description: mirror.description, mirror_name: mirror.name}
|
||||
end
|
||||
list
|
||||
end
|
||||
|
||||
def container_limit(mirror_repositories)
|
||||
container = []
|
||||
mirror_repositories.each do |mr|
|
||||
if mr.name.present?
|
||||
container << {:image => mr.name, :cpuLimit => mr.cpu_limit, :memoryLimit => "#{mr.memory_limit}M", :type => mr.try(:main_type) == "1" ? "main" : "sub"}
|
||||
end
|
||||
end
|
||||
container.to_json
|
||||
end
|
||||
|
||||
# 实训中间层pod配置
|
||||
def shixun_container_limit shixun
|
||||
container = []
|
||||
shixun.shixun_service_configs.each do |config|
|
||||
mirror = config.mirror_repository
|
||||
if mirror.name.present?
|
||||
# 资源限制没有就传默认值。
|
||||
cpu_limit = config.cpu_limit.presence || 1
|
||||
cpu_request = config.lower_cpu_limit.presence || 0.1
|
||||
memory_limit = config.memory_limit.presence || 1024
|
||||
request_limit = config.request_limit.presence || 10
|
||||
resource_limit = config.resource_limit.presence || 10000
|
||||
container << {:image => mirror.name,
|
||||
:cpuLimit => cpu_limit,
|
||||
:cpuRequest => cpu_request,
|
||||
:memoryLimit => "#{memory_limit}M",
|
||||
:memoryRequest => "#{request_limit}M",
|
||||
:resourceLimit => "#{resource_limit}K",
|
||||
:type => mirror.try(:main_type) == "1" ? "main" : "sub"}
|
||||
end
|
||||
end
|
||||
container.to_json
|
||||
end
|
||||
|
||||
# 毕设任务列表的赛选
|
||||
def course_work(task, **option)
|
||||
logger.info("#############{option}")
|
||||
course = task.course
|
||||
work_list = task.graduation_works.includes(user: [:user_extension])
|
||||
# 教师评阅搜索 0: 未评, 1 已评
|
||||
if option[:teacher_comment]
|
||||
graduation_work_ids = GraduationWorkScore.where(graduation_work_id: work_list.map(&:id)).pluck(:graduation_work_id)
|
||||
if option[:teacher_comment].zero?
|
||||
work_list = work_list.where.not(id: graduation_work_ids)
|
||||
elsif option[:teacher_comment] == 1
|
||||
work_list = work_list.where(id: graduation_work_ids).where.not(work_status: 0)
|
||||
end
|
||||
end
|
||||
|
||||
# 作品状态 0: 未提交, 1 按时提交, 2 延迟提交
|
||||
if option[:task_status]
|
||||
work_list = work_list.where(work_status: option[:task_status])
|
||||
end
|
||||
|
||||
# 分班情况
|
||||
if option[:course_group]
|
||||
group_user_ids = course.course_members.where(course_group_id: option[:course_group]).pluck(:user_id)
|
||||
# 有分组只可能是老师身份查看列表
|
||||
work_list = work_list.where(user_id: group_user_ids)
|
||||
end
|
||||
|
||||
# 只看我的交叉评阅
|
||||
if option[:cross_comment]
|
||||
graduation_work_id = task.graduation_work_comment_assignations.where(:user_id => current_user.id)
|
||||
.pluck(:graduation_work_id).uniq if task.graduation_work_comment_assignations
|
||||
work_list = work_list.where(id: graduation_work_id)
|
||||
end
|
||||
|
||||
# 输入姓名和学号搜索
|
||||
# TODO user_extension 如果修改 请调整
|
||||
if option[:search]
|
||||
work_list = work_list.joins(user: :user_extension).where("concat(lastname, firstname) like ?
|
||||
or student_id like ?", "%#{option[:search]}%", "%#{option[:search]}%")
|
||||
end
|
||||
|
||||
# 排序
|
||||
rorder = UserExtension.column_names.include?(option[:order]) ? option[:order] : "updated_at"
|
||||
b_order = %w(desc asc).include?(option[:b_order]) ? option[:b_order] : "desc"
|
||||
if rorder == "created_at" || rorder == "work_score"
|
||||
work_list = work_list.order("graduation_works.#{rorder} #{b_order}")
|
||||
elsif rorder == "student_id"
|
||||
work_list = work_list.joins(user: :user_extension).order("user_extensions.#{rorder} #{b_order}")
|
||||
end
|
||||
work_list
|
||||
end
|
||||
|
||||
def strip_html(text, len=0, endss="...")
|
||||
ss = ""
|
||||
if !text.nil? && text.length>0
|
||||
@@ -1176,15 +1052,46 @@ class ApplicationController < ActionController::Base
|
||||
|
||||
# 接口限流,请求量大有性能问题
|
||||
def request_limit
|
||||
record_count = Rails.cache.read("request/#{controller_name}/#{Time.now.strftime('%Y%m%d%H%M')}/#{request.remote_ip}")
|
||||
white_list_ip = ["106.75.110.152"]
|
||||
unless white_list_ip.include?(request.remote_ip)
|
||||
record_count = Rails.cache.read("request/#{controller_name}/#{Time.now.strftime('%Y%m%d%H')}/#{request.remote_ip}")
|
||||
if record_count.present?
|
||||
record_count = record_count + 1
|
||||
else
|
||||
record_count = 1
|
||||
end
|
||||
Rails.logger.info("请求太快,请稍后再试。#{controller_name}::#{request.remote_ip}") if record_count > 200
|
||||
tip_exception("请求太快,请稍后再试。") if record_count > 200
|
||||
|
||||
Rails.cache.write("request/#{controller_name}/#{Time.now.strftime('%Y%m%d%H')}/#{request.remote_ip}", record_count, expires_in: 1.hour)
|
||||
end
|
||||
end
|
||||
|
||||
def check_batch_requests
|
||||
check_key = "request.remote_ip:#{request.remote_ip}"
|
||||
result = Rails.cache.read(check_key)
|
||||
if result.present?
|
||||
if result.to_i > 100
|
||||
tip_exception(401, '暂时无法请求,请稍后再试')
|
||||
else
|
||||
Rails.cache.write(check_key, result.to_i + 1)
|
||||
end
|
||||
else
|
||||
Rails.cache.write(check_key, 1, expires_in: 1.hour)
|
||||
end
|
||||
end
|
||||
|
||||
def request_raw_limit
|
||||
record_count = Rails.cache.read("request/#{request.path}/#{Time.now.strftime('%Y%m%d%H')}}")
|
||||
if record_count.present?
|
||||
record_count = record_count + 1
|
||||
else
|
||||
record_count = 1
|
||||
end
|
||||
tip_exception("请求太快,请稍后再试。") if record_count > 100
|
||||
Rails.logger.info("请求太快,请稍后再试。#{request.path}") if record_count > 1000
|
||||
tip_exception("请求太快,请稍后再试。") if record_count > 1000
|
||||
|
||||
Rails.cache.write("request/#{controller_name}/#{Time.now.strftime('%Y%m%d%H%M')}/#{request.remote_ip}", record_count, expires_in: 1.minute)
|
||||
Rails.cache.write("request/#{request.path}/#{Time.now.strftime('%Y%m%d%H')}}", record_count, expires_in: 1.hour)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -4,4 +4,8 @@ class LicensesController < ApplicationController
|
||||
q = License.ransack(name_cont: params[:name])
|
||||
@licenses = q.result(distinct: true)
|
||||
end
|
||||
|
||||
def show
|
||||
@license = License.find(params[:id])
|
||||
end
|
||||
end
|
||||
|
||||
@@ -14,6 +14,8 @@ class RepositoriesController < ApplicationController
|
||||
before_action :get_latest_commit, only: %i[entries sub_entries top_counts]
|
||||
before_action :get_statistics, only: %i[top_counts]
|
||||
before_action :require_referer, only: [:raw]
|
||||
# before_action :request_limit, only: [:raw]
|
||||
before_action :request_raw_limit, only: [:raw]
|
||||
|
||||
def files
|
||||
result = @project.educoder? ? nil : Gitea::Repository::Files::GetService.call(@owner, @project.identifier, @ref, params[:search], @owner.gitea_token)
|
||||
@@ -298,7 +300,7 @@ class RepositoriesController < ApplicationController
|
||||
redirect_to file_path
|
||||
end
|
||||
|
||||
def raw
|
||||
def raw
|
||||
domain = GiteaService.gitea_config[:domain]
|
||||
api_url = GiteaService.gitea_config[:base_url]
|
||||
|
||||
|
||||
@@ -263,7 +263,7 @@ class UsersController < ApplicationController
|
||||
begin
|
||||
@user = current_user
|
||||
begin
|
||||
result = Notice::Read::CountService.call(current_user.id)
|
||||
result = EduSetting.get("notice_disable").to_s == "true" ? nil : Notice::Read::CountService.call(current_user.id)
|
||||
@message_unread_total = result.nil? ? 0 : result[2]["unread_notification"]
|
||||
rescue
|
||||
@message_unread_total = 0
|
||||
|
||||
Reference in New Issue
Block a user