diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 517fa327c..c8b272480 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -319,9 +319,25 @@ class ProjectsController < ApplicationController else @events_pages = ForgeActivity.includes(:project).where("forge_activities.project_id = ? and projects.is_public = ? and forge_act_type != ? ",@project,1, "Document").order("created_at desc").page(params['page'|| 1]).per(10); end - g = Gitlab.client + # g = Gitlab.client unless @project.gpid.nil? || @project.project_score.changeset_num == 0 - @static_total_per_user = g.rep_stats(@project.gpid) + # rep_statics_commit = @project.rep_statics.order("commits_num desc") + rep_statics_commit = RepStatics.find_by_sql("SELECT * FROM `rep_statics` where project_id = #{@project.id} order by commits_num desc limit 10") + rep_statics_code = RepStatics.find_by_sql("SELECT * FROM `rep_statics` where project_id = #{@project.id} order by changeset desc limit 10") + # rep_statics_code = @project.rep_statics.sort_by {|u| u.changeset}.reverse + @a_uname = rep_statics_commit.map {|s| s.uname } + @a_uname_code = rep_statics_code.map {|s| s.uname } + @a_commits_num = rep_statics_commit.map {|s| s.commits_num.to_i } + @a_commits_add = rep_statics_code.map {|s| s.add.to_i } + @a_commits_del = rep_statics_code.map {|s| s.del.to_i } + @a_commits_changeset = rep_statics_code.map {|s| s.changeset.to_i } + g = Gitlab.client + begin + g_branch = g.project(@project.gpid).default_branch.to_s + rescue + logger.error("get gitlab project failed!") + end + @rev = g_branch.nil? ? "master" : g_branch end # 根据对应的请求,返回对应的数据 respond_to do |format| diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index 82a6196cb..380e880ad 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -348,8 +348,10 @@ update # (show_error_not_found; return) unless @entries g = Gitlab.client @changesets = g.commits(@project.gpid, :ref_name => @rev) + g_project = g.project(@project.gpid) # 总的提交数 - @changesets_all_count = @project.gpid.nil? ? 0 : g.project(@project.gpid).commit_count + @changesets_all_count = @project.gpid.nil? ? 0 : g_project.commit_count + @g_default_branch = g_project.default_branch.nil? ? "master" : g_project.default_branch # 访问该页面的是会后则刷新 if @project.project_score.nil? ProjectScore.create(:project_id => @project.id, :score => false) @@ -573,7 +575,17 @@ update g = Gitlab.client begin @static_total_per_user = g.rep_stats(project_id, :rev => rev) - @static_total_per_user + # 更新rep_statics统计数 + @static_total_per_user.each do |static| + rep_static = RepStatics.where("project_id =? and email =?", @project.id, static.email.to_s).first + if rep_static.nil? + RepStatics.create(:project_id => @project.id, :uname => static.uname, :commits_num => static.commits_num, :email => static.email, :add => static.add, :del => static.del, :changeset => static.changes) + else + if @rev == params[:default_branch] + rep_static.update_attributes(:uname => static.uname, :commits_num => static.commits_num, :email => static.email, :add => static.add, :del => static.del, :changeset => static.changes) + end + end + end # @static_month__per_user = g.rep_stats(project_id, :rev => rev, :creator => creator, :period => 2) # @static_week_per_user = g.rep_stats(project_id, :rev => rev, :creator => creator, :period => 3) rescue diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index 424ddd71f..8f70cced5 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -5,7 +5,7 @@ class StudentWorkController < ApplicationController include ApplicationHelper require 'bigdecimal' require "base64" - before_filter :find_homework, :only => [:new, :index, :create, :student_work_absence_penalty, :absence_penalty_list, :evaluation_list, :program_test,:program_test_ex,:code_repeattest,:set_score_rule,:forbidden_anonymous_comment,:delete_work,:new_student_work_project,:student_work_project,:cancel_relate_project,:search_course_students] + before_filter :find_homework, :only => [:new, :index, :create, :student_work_absence_penalty, :absence_penalty_list, :evaluation_list, :program_test,:program_test_ex,:code_repeattest,:work_canrepeat,:set_score_rule,:forbidden_anonymous_comment,:delete_work,:new_student_work_project,:student_work_project,:cancel_relate_project,:search_course_students] before_filter :find_work, :only => [:edit, :update, :show, :destroy, :add_score, :praise_student_work,:retry_work,:revise_attachment] before_filter :member_of_course, :only => [:new, :create, :show, :add_score, :praise_student_work] before_filter :author_of_work, :only => [:edit, :update, :destroy] @@ -188,7 +188,7 @@ class StudentWorkController < ApplicationController #找出该作业的所有提交作业 def find_all_student_work_by_homeid() - all_studentwork = StudentWork.where("homework_common_id =?", @homework.id) + all_studentwork = StudentWork.where("homework_common_id =#{@homework.id} and is_test = 0 ") all_studentwork end @@ -222,6 +222,15 @@ class StudentWorkController < ApplicationController JSON.parse(res.body) end + def work_canrepeat + @homework_id = params[:homework] + @course_id = params[:course_id] + + all_studentwork = find_all_student_work_by_homeid() + + @work_count = all_studentwork.count + end + #代码查重 status: 0完成 -2不需要查重 -1查重失败不支持该语言 def code_repeattest tStarttime = Time.now diff --git a/app/models/project.rb b/app/models/project.rb index 184b3c7af..ceec0e182 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -115,6 +115,7 @@ class Project < ActiveRecord::Base has_many :org_projects,:dependent => :destroy has_many :organization,:through => :org_projects + has_many :rep_statics, :class_name => 'RepStatics' # has_many :journals diff --git a/app/models/rep_statics.rb b/app/models/rep_statics.rb new file mode 100644 index 000000000..584af6560 --- /dev/null +++ b/app/models/rep_statics.rb @@ -0,0 +1,4 @@ +class RepStatics < ActiveRecord::Base + belongs_to :project + attr_accessible :add, :commits_num, :del, :email, :project_id, :uname, :changeset +end diff --git a/app/views/courses/_compare_code_tips_1.html.erb b/app/views/courses/_compare_code_tips_1.html.erb index 4dc073797..a2230bd46 100644 --- a/app/views/courses/_compare_code_tips_1.html.erb +++ b/app/views/courses/_compare_code_tips_1.html.erb @@ -37,11 +37,12 @@ console.log(data); if (data.status == 0) { - $("#ajax-modal").html('<%= escape_javascript( render :partial => 'courses/compare_code_tips_2',:locals => {:des=>"查重完成,是否立即查看结果?",:status=>1, :homework=> homework,:courseid=> courseid})%>'); + $("#ajax-modal").html('<%= escape_javascript( render :partial => 'courses/compare_code_tips_2',:locals => {:des=>"查重完成,是否立即查看结果?",:status=>1, :homework=> homework,:courseid=> courseid})%>'); showModal('ajax-modal', '580px'); $('#ajax-modal').siblings().remove(); - $('#ajax-modal').before(""); - $('#ajax-modal').parent().css("top","40%").css("left","50%"); + $('#ajax-modal').before(""); + //$('#ajax-modal').parent().css("top","40%").css("left","50%"); + $('#ajax-modal').parent().css("top","30%").css("left","50%").css("padding-top","10px").css("position","fixed"); $('#ajax-modal').parent().addClass("resourceUploadPopup"); $('#ajax-modal').css("padding-left","16px").css("padding-bottom","16px"); @@ -54,8 +55,8 @@ $("#ajax-modal").html('<%= escape_javascript( render :partial => 'courses/compare_code_tips_2',:locals => {:des=>"对不起目前只支持java/c/c++的代码查重!",:status=>0, :homework=> homework,:courseid=> courseid})%>'); showModal('ajax-modal', '580px'); $('#ajax-modal').siblings().remove(); - $('#ajax-modal').before(""); - $('#ajax-modal').parent().css("top","40%").css("left","50%"); + $('#ajax-modal').before(""); + $('#ajax-modal').parent().css("top","30%").css("left","50%").css("padding-top","10px").css("position","fixed"); $('#ajax-modal').parent().addClass("resourceUploadPopup"); $('#ajax-modal').css("padding-left","16px").css("padding-bottom","16px"); @@ -69,8 +70,8 @@ $("#ajax-modal").html('<%= escape_javascript( render :partial => 'courses/compare_code_tips_2',:locals => {:des=>"对不起该作业的作品过少不能查重!",:status=>0, :homework=> homework,:courseid=> courseid})%>'); showModal('ajax-modal', '580px'); $('#ajax-modal').siblings().remove(); - $('#ajax-modal').before(""); - $('#ajax-modal').parent().css("top","40%").css("left","50%"); + $('#ajax-modal').before(""); + $('#ajax-modal').parent().css("top","30%").css("left","50%").css("padding-top","10px").css("position","fixed"); $('#ajax-modal').parent().addClass("resourceUploadPopup"); $('#ajax-modal').css("padding-left","16px").css("padding-bottom","16px"); @@ -85,8 +86,8 @@ $("#ajax-modal").html('<%= escape_javascript( render :partial => 'courses/compare_code_tips_2',:locals => {:des=>"对不起,服务器繁忙请稍后再试!",:status=>0, :homework=> homework,:courseid=> courseid})%>'); showModal('ajax-modal', '580px'); $('#ajax-modal').siblings().remove(); - $('#ajax-modal').before(""); - $('#ajax-modal').parent().css("top","40%").css("left","50%"); + $('#ajax-modal').before(""); + $('#ajax-modal').parent().css("top","30%").css("left","50%").css("padding-top","10px").css("position","fixed"); $('#ajax-modal').parent().addClass("resourceUploadPopup"); $('#ajax-modal').css("padding-left","16px").css("padding-bottom","16px"); diff --git a/app/views/courses/_show_compare_code.html.erb b/app/views/courses/_show_compare_code.html.erb index 00bea362e..0d5dd36ec 100644 --- a/app/views/courses/_show_compare_code.html.erb +++ b/app/views/courses/_show_compare_code.html.erb @@ -12,7 +12,7 @@ <% if @simi_value.to_i >= 90 %>