From 0fafbffa491d066163510c8f7baec8f61672cb83 Mon Sep 17 00:00:00 2001 From: cxt Date: Fri, 6 May 2016 08:52:54 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=9A=84=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=8A=A0=E5=88=B0=E4=BD=9C=E4=B8=9A=E7=9A=84=E6=9C=80=E5=90=8E?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=B6=E9=97=B4=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/homework_common_controller.rb | 39 +++++++++++++++++++ lib/tasks/homework_update.rake | 7 ++++ 2 files changed, 46 insertions(+) create mode 100644 lib/tasks/homework_update.rake diff --git a/app/controllers/homework_common_controller.rb b/app/controllers/homework_common_controller.rb index 0d6a1a0e7..8da82afd3 100644 --- a/app/controllers/homework_common_controller.rb +++ b/app/controllers/homework_common_controller.rb @@ -11,6 +11,7 @@ class HomeworkCommonController < ApplicationController before_filter :member_of_course, :only => [:index] def index + update_homework_time(@course.homework_commons) @new_homework = HomeworkCommon.new @new_homework.homework_detail_manual = HomeworkDetailManual.new @new_homework.course = @course @@ -385,4 +386,42 @@ class HomeworkCommonController < ApplicationController student_works += student_works student_works[index + 1 .. index + n] end + + def update_homework_time homeworks + unless homeworks.nil? + homeworks.each do |h| + if h.homework_type == 3 + student_works = h.student_works.where("project_id != 0") + time = h.updated_at + unless student_works.nil? + student_works.each do |s| + project = Project.find s.project_id + unless project.nil? && project.gpid.nil? + begin + # gitlab端获取默认分支 + g = Gitlab.client + default_branch = g.project(project.gpid).default_branch + changesets = g.commits(project.gpid, :ref_name => default_branch) + changesets_latest_coimmit = changesets[0] + unless changesets[0].blank? + if time < changesets_latest_coimmit.created_at + time = changesets_latest_coimmit.created_at + end + end + rescue + logger.error("############## ==> update homework project time") + end + end + end + end + puts h.updated_at + puts time + s_time = time + if format_time(time) > format_time(h.updated_at) + h.update_attribute(:updated_at, s_time) + end + end + end + end + end end diff --git a/lib/tasks/homework_update.rake b/lib/tasks/homework_update.rake new file mode 100644 index 000000000..b2246bfd5 --- /dev/null +++ b/lib/tasks/homework_update.rake @@ -0,0 +1,7 @@ +namespace :homework_update do + desc "update homework updated_at" + task :update_homework => :environment do + stu_pro = StudentWork.where("project_id != 0") + + end +end \ No newline at end of file