|
- #coding=utf-8
-
- namespace :update_homework do
- desc "update homework project time"
- task :update_homework => :environment do
- year = Time.now.year
- courses = Course.where("time > ? and is_delete = 0", (year.to_i - 2))
- course_ids = courses.nil? ? '(-1)' : '(' + courses.map{|c| c.id}.join(',') + ')'
- homeworks = HomeworkCommon.where("course_id in #{course_ids} and homework_type = 3")
- unless homeworks.nil?
- homeworks.each do |h|
- if h.homework_type == 3
- student_works = h.student_work_projects.where("is_leader = 1 && project_id != -1")
- time = h.updated_at
- unless student_works.nil?
- student_works.each do |s|
- project = Project.find s.project_id
- if !project.nil? && !project.gpid.blank?
- project_time=project.updated_on
- project_time=ForgeActivity.where("project_id=?",project.id).last.updated_at if ForgeActivity.where("project_id=?",project.id).last
- if time.strftime('%Y-%m-%d %H:%M:%S') < project_time.strftime('%Y-%m-%d %H:%M:%S')
- #if format_time(time) < format_time(project_time)
- time = project_time
- end
- 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?
- project_score = project.project_score
- if project_score.nil?
- ProjectScore.create(:project_id => project.id, :score => false)
- else
- project_score.update_column(:commit_time, changesets_latest_coimmit.created_at.to_time)
- end
- if time.strftime('%Y-%m-%d %H:%M:%S') < changesets_latest_coimmit.created_at.to_time.strftime('%Y-%m-%d %H:%M:%S')
- #if format_time(time) < format_time(changesets_latest_coimmit.created_at)
- time = changesets_latest_coimmit.created_at.to_time
- end
- end
- rescue Exception => e
- puts e
- end
- end
- end
- end
- s_time = time
- puts "latest time is =========================> #{time}"
- if time.strftime('%Y-%m-%d %H:%M:%S') > h.updated_at.strftime('%Y-%m-%d %H:%M:%S')
- h.update_column('updated_at', s_time)
- course_activity = CourseActivity.where("course_act_type=? and course_act_id =?", 'HomeworkCommon', h.id).first
- if course_activity && (time.strftime('%Y-%m-%d %H:%M:%S') > course_activity.updated_at.strftime('%Y-%m-%d %H:%M:%S'))
- course_activity.update_column('updated_at', s_time)
- puts "user_activity time is =========================> #{course_activity}"
- end
- user_activity = UserActivity.where("act_type=? and act_id =?", 'HomeworkCommon', h.id).first
- if user_activity && (time.strftime('%Y-%m-%d %H:%M:%S') > user_activity.updated_at.strftime('%Y-%m-%d %H:%M:%S'))
- user_activity.update_column('updated_at', s_time)
- puts "user_activity time is =========================> #{user_activity}"
- end
- org_activity = OrgActivity.where("org_act_type=? and org_act_id =?", 'HomeworkCommon', h.id).first
- if org_activity && (time.strftime('%Y-%m-%d %H:%M:%S') > org_activity.updated_at.strftime('%Y-%m-%d %H:%M:%S'))
- org_activity.update_column('updated_at', s_time)
- puts "org_activity time is =========================> #{org_activity}"
- end
- end
- end
- end
- end
- end
- end
|