forked from Gitlink/forgeplus
105 lines
3.8 KiB
Ruby
105 lines
3.8 KiB
Ruby
class Ci::TemplatesController < Ci::BaseController
|
|
|
|
before_action :require_login, only: %i[list create]
|
|
skip_before_action :connect_to_ci_db
|
|
|
|
#======模板管理======#
|
|
def list
|
|
stage_type = params[:stage_type]
|
|
template_name = params[:name]
|
|
templates = template_name.blank? ? Ci::Template.all : Ci::Template.where("template_name like ?", "%#{template_name}%")
|
|
templates = templates.select{ |template| template.login == current_user.login} unless current_user.admin?
|
|
if !stage_type.blank? && stage_type != 'all'
|
|
templates = templates.select{ |template| template.stage_type == stage_type}
|
|
end
|
|
@total_count = templates.map(&:id).count
|
|
@templates = paginate templates
|
|
end
|
|
|
|
def show
|
|
@template = Ci::Template.find(params[:id])
|
|
end
|
|
|
|
def create
|
|
stage_type = params[:stage_type]
|
|
category = params[:category]
|
|
if category.blank?
|
|
category = Ci::Template::STAGE_TYPES[:"#{stage_type}"]
|
|
end
|
|
|
|
if params[:id]
|
|
template = Ci::Template.find(params[:id])
|
|
if template
|
|
template.update!(template_name: params[:template_name],
|
|
stage_type: stage_type,
|
|
category: category,
|
|
parent_category: Ci::Template::STAGE_TYPES[:"#{stage_type}"],
|
|
content: params[:content],
|
|
login: current_user.admin? ? 'admin' : current_user.login
|
|
)
|
|
end
|
|
else
|
|
template = Ci::Template.new(template_name: params[:template_name],
|
|
stage_type: stage_type,
|
|
category: category,
|
|
parent_category: Ci::Template::STAGE_TYPES[:"#{stage_type}"],
|
|
content: params[:content],
|
|
login: current_user.admin? ? 'admin' : current_user.login
|
|
)
|
|
template.save!
|
|
end
|
|
render_ok
|
|
rescue Exception => ex
|
|
render_error(ex.message)
|
|
end
|
|
|
|
def update
|
|
template = Ci::Template.find(params[:id])
|
|
template.update!(template_name: params[:template_name],
|
|
stage_type: params[:stage_type],
|
|
category: params[:category],
|
|
parent_category: params[:parent_category],
|
|
content: params[:content]
|
|
)
|
|
render_ok
|
|
rescue Exception => ex
|
|
render_error(ex.message)
|
|
end
|
|
|
|
def destroy
|
|
template = Ci::Template.find(params[:id])
|
|
if template
|
|
template.destroy!
|
|
end
|
|
render_ok
|
|
rescue Exception => ex
|
|
render_error(ex.message)
|
|
end
|
|
|
|
#======流水线模板查询=====#
|
|
def templates_by_stage
|
|
stage_type = params[:stage_type]
|
|
if stage_type != Ci::PipelineStage::CUSTOMIZE_STAGE_TYPE
|
|
@templates = Ci::Template.where("stage_type = ?", stage_type)
|
|
@templates = @templates.select{ |template| template.login == current_user.login || template.login == 'admin'} unless current_user.admin?
|
|
if stage_type == Ci::PipelineStage::INIT_STAGE_TYPE && !@templates.nil?
|
|
@templates.each do |template|
|
|
content = template.content
|
|
unless content.blank?
|
|
pipeline = Ci::Pipeline.find(params[:id])
|
|
template.content = content.gsub(/{name}/, pipeline.pipeline_name) unless pipeline.nil?
|
|
end
|
|
end
|
|
end
|
|
# 根据模板类别分组
|
|
@category_templates = @templates.group_by{ |template| template.category }
|
|
else
|
|
# 自定义阶段,按阶段分类分类返回模板列表
|
|
@templates = Ci::Template.where("stage_type != ?", Ci::PipelineStage::INIT_STAGE_TYPE)
|
|
@templates = @templates.select{ |template| template.login == current_user.login || template.login == 'admin'} unless current_user.admin?
|
|
@category_templates = @templates.group_by{ |template| template.parent_category }
|
|
end
|
|
end
|
|
|
|
end
|