Merge branch 'dev_aliyun' of https://bdgit.educoder.net/Hjqreturn/educoder into dev_aliyun

dev_forum
daiao 6 years ago
commit 4c0ade585c

@ -38,7 +38,8 @@ class AttachmentsController < ApplicationController
content_type = upload_file.content_type.presence || 'application/octet-stream'
remote_path = file_save_to_ucloud(local_path[folder.size, local_path.size], local_path, content_type)
# remote_path = file_save_to_ucloud(local_path[folder.size, local_path.size], local_path, content_type)
remote_path = nil # TODO 暂时本地上传,待域名配置后方可上传至云端
logger.info "local_path: #{local_path}"
logger.info "remote_path: #{remote_path}"

@ -2,10 +2,10 @@ class BoardsController < ApplicationController
before_action :require_login, :check_auth
before_action :find_course, only: [:create]
before_action :set_board, except: [:create]
before_action :teacher_allowed
before_action :teacher_or_admin_allowed
def index
@boards = @course.boards.includes(messages: [:last_reply, :author]);
@boards = @course.boards.includes(messages: [:last_reply, :author])
end
def show

@ -2,7 +2,7 @@ class CourseModulesController < ApplicationController
before_action :require_login, :check_auth
before_action :set_module, except: [:unhidden_modules]
before_action :find_course, only: [:unhidden_modules]
before_action :teacher_allowed
before_action :teacher_or_admin_allowed
# 模块置顶
def sticky_module
@ -16,6 +16,7 @@ class CourseModulesController < ApplicationController
# 模块隐藏
def hidden_module
tip_exception("请至少保留一个课堂模块") if @course.none_hidden_course_modules.where.not(id: @course_module.id).size == 0
@course_module.update_attributes(hidden: 1)
normal_status(0, "更新成功")
end

@ -1,7 +1,7 @@
class CourseSecondCategoriesController < ApplicationController
before_action :require_login, :check_auth
before_action :set_category
before_action :teacher_allowed
before_action :teacher_or_admin_allowed
# 目录重命名
def rename_category

@ -1057,6 +1057,7 @@ class CoursesController < ApplicationController
tip_exception("课堂名称应以课程名称开头命名") unless params[:course][:name].index(params[:course_list_name]) &&
params[:course][:name].index(params[:course_list_name]) == 0
tip_exception("课堂所属单位不能为空!") if params[:school].blank?
tip_exception("请至少添加一个课堂模块") if params[:course_module_types].blank?
@school = School.find_by!(name: params[:school].strip)
end

@ -689,7 +689,7 @@ class ExercisesController < ApplicationController
ActiveRecord::Base.transaction do
begin
check_ids = Exercise.where(id: params[:check_ids])
ex_end_time = params[:end_time].to_time
ex_end_time = params[:end_time].blank? ? Time.at(((1.month.since.to_i)/3600.0).ceil * 3600) : params[:end_time].to_time
check_ids.each do |exercise|
if exercise.present?
if exercise.unified_setting
@ -707,7 +707,6 @@ class ExercisesController < ApplicationController
ex_unified = true
e_time = ex_end_time
else
e_time = exercise.exercise_group_settings.end_time_no_null.map(&:end_time).max
ex_unified = false
g_course.each do |i|
exercise_group_setting = exercise.exercise_group_settings.find_in_exercise_group("course_group_id",i).first #根据课堂分班的id寻找试卷所在的班级
@ -725,7 +724,8 @@ class ExercisesController < ApplicationController
new_exercise_group.save
end
end
group_ids = params[:group_ids]
# group_ids = params[:group_ids]
e_time = exercise.exercise_group_settings.end_time_no_null.map(&:end_time).max
end
else
exercise.exercise_group_settings.destroy_all
@ -745,7 +745,7 @@ class ExercisesController < ApplicationController
if exercise.course_acts.size == 0
exercise.course_acts << CourseActivity.new(:user_id => exercise.user_id,:course_id => exercise.course_id)
end
ExercisePublishNotifyJob.perform_later(exercise.id, group_ids)
ExercisePublishNotifyJob.perform_later(exercise.id, g_course)
end
end
end
@ -976,8 +976,14 @@ class ExercisesController < ApplicationController
def start_answer
ActiveRecord::Base.transaction do
begin
@exercise_user_current = @exercise.exercise_users.exercise_commit_users(@exercise_current_user_id)&.first
if @exercise_user_current.blank?
ex_users_current = @exercise.exercise_users.exercise_commit_users(@exercise_current_user_id)
@exercise_user_current = ex_users_current&.first
logger.info("############______________ex_users_current________#######{ex_users_current}")
if ex_users_current.exists?
if @exercise_user_current.start_at.blank?
@exercise_user_current.update_attribute("start_at",Time.now)
end
else
if @user_course_identity > Course::ASSISTANT_PROFESSOR #当为老师的时候不创建exercise_user表理论上老师是不能进入答题的
exercise_user_params = {
:user_id => @exercise_current_user_id,
@ -987,16 +993,12 @@ class ExercisesController < ApplicationController
exercise_user_current = ExerciseUser.new(exercise_user_params)
exercise_user_current.save
end
else
if @exercise_user_current.start_at.blank?
@exercise_user_current.update_attribute("start_at",Time.now)
end
end
@t_user_exercise_status = @exercise.get_exercise_status(current_user)
@user_left_time = nil
if @user_course_identity < Course::STUDENT || (@t_user_exercise_status == 3) ||
(@exercise_user_current.present? && @exercise_user_current.commit_status == 1)
(ex_users_current.exists? && @exercise_user_current.commit_status == 1)
@user_exercise_status = 1 #当前用户为老师/试卷已截止/试卷已提交不可编辑
else
@user_left_time = get_exercise_left_time(@exercise,current_user)

@ -503,6 +503,7 @@ class GamesController < ApplicationController
# 监测版本库HEAD是否存在不存在则取最新的HEAD
uri = "#{shixun_tomcat}/bridge/game/check"
res = uri_post uri, rep_params
uid_logger("repo_content to bridge: res is #{res}")
# res值0 表示正常;-1表示有错误-2表示代码版本库没了
if status == 0 && res && (res['code'] == -2 || res['code'] == -1)
# 删除不需要的仓库
@ -512,7 +513,7 @@ class GamesController < ApplicationController
uid_logger_error("#{e.message}")
end
# fork一个新的仓库
project_fork(@myshixun, @shixun.repo_path, current_user.login)
# project_fork(@myshixun, @shixun.repo_path, current_user.login)
end
rescue Exception => e
uid_logger_error(e.message)

@ -96,6 +96,10 @@ class MyshixunsController < ApplicationController
status = jsonTestDetails['status']
game_id = jsonTestDetails['buildID']
sec_key = jsonTestDetails['sec_key']
res_usage = jsonTestDetails['resUsage']
ts_time = res_usage['test_set_time_1']
logger.info("training_task_status start#1**#{game_id}**** #{Time.now.strftime("%Y-%m-%d %H:%M:%S.%L")}")
resubmit = jsonTestDetails['resubmit']
outPut = tran_base64_decode64(jsonTestDetails['outPut'])
@ -191,8 +195,8 @@ class MyshixunsController < ApplicationController
test_cases_time = format("%.3f", (Time.now.to_f - t1.to_f)).to_f
if record.present?
consume_time = format("%.3f", (Time.now - record.created_at)).to_f
record.update_attributes!(:consume_time => consume_time, :git_pull => timeCost['pull'] ,
:create_pod => timeCost['createPod'], :pod_execute => timeCost['execute'], :test_cases => test_cases_time,
record.update_attributes!(:consume_time => consume_time, :git_pull => timeCost['pull'] , :create_pod => timeCost['createPod'],
:pod_execute => timeCost['execute'], :test_cases => test_cases_time, :ts_time => ts_time,
:brige => timeCost['evaluateAllTime'], :return_back => return_back_time)
end
uid_logger("training_task_status start#4**#{game_id}**** #{Time.now.strftime("%Y-%m-%d %H:%M:%S.%L")}")

@ -247,7 +247,7 @@ class PollsController < ApplicationController
ActiveRecord::Base.transaction do
begin
check_ids = Poll.where(id: params[:check_ids])
ex_end_time = params[:end_time] || Time.at(((1.month.since.to_i)/3600.0).ceil * 3600)
ex_end_time = params[:end_time].blank? ? Time.at(((1.month.since.to_i)/3600.0).ceil * 3600) : params[:end_time].to_time
check_ids.each do |poll|
if poll.unified_setting
pl_status = poll.polls_status #则为试卷的状态
@ -263,7 +263,6 @@ class PollsController < ApplicationController
poll_unified = true
e_time = ex_end_time
else
e_time = poll.poll_group_settings.end_time_present.map(&:end_time).max
poll_unified = false
g_course.each do |i|
poll_group_setting = poll.poll_group_settings.find_in_poll_group("course_group_id",i).first #根据课堂分班的id寻找问卷所在的班级
@ -281,7 +280,8 @@ class PollsController < ApplicationController
new_poll_group.save
end
end
group_ids = params[:group_ids]
e_time = poll.poll_group_settings.end_time_present.map(&:end_time).max
# group_ids = params[:group_ids]
end
else
poll.poll_group_settings.destroy_all
@ -300,7 +300,7 @@ class PollsController < ApplicationController
if poll.course_acts.size == 0
poll.course_acts << CourseActivity.new(:user_id => poll.user_id,:course_id => poll.course_id)
end
PollPublishNotifyJob.perform_later(poll.id, group_ids)
PollPublishNotifyJob.perform_later(poll.id, g_course)
end
end
normal_status(0, "问卷发布成功!")

@ -1,3 +1,11 @@
# 字段说明:
# consume_time总耗时包括前端发出请求到最后前端显示效果
# git_pull中间层pull代码耗时
# create_pod创建pod耗时
# pod_executepod执行时间耗时也就代码执行耗时是各个测试集的总耗时
# test_casesoutpus表中存储及处理测试集的时间耗时
# brige中间层总耗时
# return_back回调耗时从中间层发送请求到educoder所耗时间
class EvaluateRecord < ApplicationRecord
default_scope { order("evaluate_records.id desc") }
belongs_to :game

@ -1,3 +1,15 @@
# 字段说明:
# code-1表示评测未通过0表示评测成功实质是status的值
# mes
# out_put
# test_set_position: 测试集序号(排序)
# actual_output
# result:
# is_public测试集是否是公开
# query_index评测次数
# compile_success:
# text_scor:
# sec_key每次评测的唯一标识
class Output < ApplicationRecord
belongs_to :game
end

@ -0,0 +1,5 @@
class AddTsTimeToOutputs < ActiveRecord::Migration[5.2]
def change
add_column :outputs, :ts_time, :float
end
end

@ -0,0 +1,5 @@
class AddMaxMemToEvaluateRecords < ActiveRecord::Migration[5.2]
def change
add_column :evaluate_records, :max_mem, :float
end
end
Loading…
Cancel
Save