forgeplus/app/models/glcc_medium_term_examine_ma...

104 lines
3.3 KiB
Ruby
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# == Schema Information
#
# Table name: glcc_medium_term_examine_material
#
# id :integer not null, primary key
# student_reg_id :integer not null
# task_id :integer not null
# defence_video_url :string(1000) not null
# code_or_pr_url :string(1000)
# PPT_attachment_id :integer not null
# term :integer
# created_on :datetime
# updated_on :datetime
# is_delete :boolean default("0"), not null
# round :integer default("1"), not null
#
class GlccMediumTermExamineMaterial < ActiveRecord::Base
self.table_name = "glcc_medium_term_examine_material"
belongs_to :glcc_student, :class_name => :GlccRegistrationStudent, :foreign_key => "student_reg_id"
belongs_to :task, :class_name => :GlccRegistrationTask, :foreign_key => "task_id"
def check_pr_url
state = []
# code_or_pr_url = "https://www.gitlink.org.cn/Gitlink/forgeplus/pulls/337"
url_array = code_or_pr_url.split("/")
gitlink_index = url_array.index("www.gitlink.org.cn") || url_array.index("gitlink.org.cn") || url_array.index("testforgeplus.trustie.net")
pull_index = url_array.index("pulls")
#发送没有在gitlink上提交PR的邮件
unless gitlink_index.present?
state << 1
end
# 输入的地址有问题邮件内容
unless pull_index == 5
state << 2
end
user = Owner.find_by(login: url_array[3])
project = Project.find_by(identifier: url_array[4], user_id:user.try(:id))
pr = PullRequest.where(project:project, gitea_number:url_array[6])
unless pr.present?
state << 3
end
if white_list #特殊处理 白名单考核不处理
state = []
end
state
end
def white_list
# 全局设置白名单 key
key = "glcc_white_task_#{self.created_on.year}"
white_task = EduSetting.find_by_name(key)
if white_task
task_ids = white_task.value.split(",")
task_ids.map(&:to_i).include?(self.task_id)
else
false
end
end
def send_mail
gcs = glcc_student
mail = gcs.mail
return if mail.nil? || code_or_pr_url.nil?
state = check_pr_url
return unless state.present?
title = "#{self.created_on.year}年GitLink确实开源GLCC开源夏令营#{term == 1 ? "中期考核" : "结项考核"}提醒"
content = gennerate_content(state)
UserMailer.glcc_pr_check_email(mail,title, gcs.student_name, content).deliver_now
end
def state_to_html
gcs = glcc_student
mail = gcs.mail
return "数据异常PR链接为空" if mail.nil? || code_or_pr_url.nil?
state = check_pr_url
gennerate_content(state)
end
def gennerate_content(state)
content = ""
state.map{|e|
content = content + number_to_content(e)
}
content
end
def number_to_content(num)
case num
when 1
"<p> PR链接为非GitLink平台链接 </p>"
when 2
"<p> PR链接为GitLink平台链接 但非PR链接 </p>"
when 3
"<p> PR链接中的PR不存在 </p>"
end
end
end