From f0e334d33d85e097cadb80db65f781a255ab67c3 Mon Sep 17 00:00:00 2001 From: cxt Date: Sun, 9 Oct 2016 09:16:05 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=88=86=E7=BB=84=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E7=9A=84=E8=BF=9F=E4=BA=A4=E6=89=A3=E5=88=86=E5=92=8C=E7=BC=BA?= =?UTF-8?q?=E8=AF=84=E6=89=A3=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/homework_common_controller.rb | 25 ++++++++++++++++--- app/models/student_work.rb | 2 +- .../_evaluation_un_group_work.html.erb | 6 ++--- lib/tasks/homework_evaluation.rake | 24 +++++++++++++++--- 4 files changed, 45 insertions(+), 12 deletions(-) diff --git a/app/controllers/homework_common_controller.rb b/app/controllers/homework_common_controller.rb index c82c1f947..75e8df200 100644 --- a/app/controllers/homework_common_controller.rb +++ b/app/controllers/homework_common_controller.rb @@ -255,11 +255,28 @@ class HomeworkCommonController < ApplicationController @homework_detail_manual.update_column('evaluation_end', Date.today) #计算缺评扣分 work_ids = "(" + @homework.student_works.has_committed.map(&:id).join(",") + ")" - @homework.student_works.has_committed.each do |student_work| - absence_penalty_count = student_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count - student_work.user.student_works_scores.where("student_work_id IN #{work_ids}").count - student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * @homework_detail_manual.absence_penalty : 0 - student_work.save + if @homework.homework_type != 3 + @homework.student_works.has_committed.each do |student_work| + absence_penalty_count = student_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count - student_work.user.student_works_scores.where("student_work_id IN #{work_ids}").count + student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * @homework_detail_manual.absence_penalty : 0 + student_work.save + end + else + @homework.student_works.has_committed.each do |student_work| + absence_penalty_count = student_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count - student_work.user.student_works_scores.where("student_work_id IN #{work_ids}").count + student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * @homework_detail_manual.absence_penalty : 0 + student_work.save + if student_work.absence_penalty != 0 + pros = student_work.student_work_projects.where("is_leader = 0") + user_ids = pros.empty? ? "(-1)" : "(" + pros.map{|stu|stu.user_id}.join(",") + ")" + student_works = @homework.student_works.where("user_id in #{user_ids}") + student_works.each do |st_work| + st_work.update_attribute("absence_penalty", student_work.absence_penalty) + end + end + end end + # 匿评关闭消息邮件通知 send_message_anonymous_comment(@homework, m_status = 3) Mailer.send_mail_anonymous_comment_close(@homework).deliver diff --git a/app/models/student_work.rb b/app/models/student_work.rb index a3f692341..a33200b3b 100644 --- a/app/models/student_work.rb +++ b/app/models/student_work.rb @@ -1,6 +1,6 @@ #学生提交作品表 #work_status :0 未提交 1 已提交 2 迟交 3 分组作品复制的组员作品 class StudentWork < ActiveRecord::Base - attr_accessible :name, :description, :homework_common_id, :user_id, :final_score, :teacher_score, :student_score, :teaching_asistant_score, :system_score, :work_score, :project_id, :is_test, :simi_id, :simi_value, :work_status, :commit_time + attr_accessible :name, :description, :homework_common_id, :user_id, :final_score, :teacher_score, :student_score, :teaching_asistant_score, :system_score, :work_score, :project_id, :is_test, :simi_id, :simi_value, :work_status, :commit_time, :late_penalty, :absence_penalty belongs_to :homework_common belongs_to :user diff --git a/app/views/student_work/_evaluation_un_group_work.html.erb b/app/views/student_work/_evaluation_un_group_work.html.erb index 8c18d64c7..fb0efd9c8 100644 --- a/app/views/student_work/_evaluation_un_group_work.html.erb +++ b/app/views/student_work/_evaluation_un_group_work.html.erb @@ -52,15 +52,15 @@ <% unless score.nil?%>
作品最终评分为 -  <%= student_work.final_score%> 分。 +  <%= student_work.final_score%> 分。
迟交扣分   <%= student_work.homework_common && student_work.homework_common.teacher_priority == 1 && student_work.teacher_score ? 0 : student_work.late_penalty %> -  分, +  分,
缺评扣分   <%= student_work.homework_common && student_work.homework_common.teacher_priority == 1 && student_work.teacher_score ? 0 : student_work.absence_penalty%> -  分, +  分,
最终成绩为  <%= format("%.1f",score<0 ? 0 : score)%> 分。
diff --git a/lib/tasks/homework_evaluation.rake b/lib/tasks/homework_evaluation.rake index a8356ea5a..65edcec9f 100644 --- a/lib/tasks/homework_evaluation.rake +++ b/lib/tasks/homework_evaluation.rake @@ -77,10 +77,26 @@ namespace :homework_evaluation do if homework_common.anonymous_comment == 0 && homework_detail_manual.comment_status == 2 #开启匿评状态才可关闭匿评 #计算缺评扣分 work_ids = "(" + homework_common.student_works.has_committed.map(&:id).join(",") + ")" - homework_common.student_works.has_committed.each do |student_work| - absence_penalty_count = student_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count - student_work.user.student_works_scores.where("student_work_id IN #{work_ids}").count - student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * homework_detail_manual.absence_penalty : 0 - student_work.save + if homework_common.homework_type != 3 + homework_common.student_works.has_committed.each do |student_work| + absence_penalty_count = student_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count - student_work.user.student_works_scores.where("student_work_id IN #{work_ids}").count + student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * homework_detail_manual.absence_penalty : 0 + student_work.save + end + else + homework_common.student_works.has_committed.each do |student_work| + absence_penalty_count = student_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count - student_work.user.student_works_scores.where("student_work_id IN #{work_ids}").count + student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * homework_detail_manual.absence_penalty : 0 + student_work.save + if student_work.absence_penalty != 0 + pros = student_work.student_work_projects.where("is_leader = 0") + user_ids = pros.empty? ? "(-1)" : "(" + pros.map{|stu|stu.user_id}.join(",") + ")" + student_works = homework_common.student_works.where("user_id in #{user_ids}") + student_works.each do |st_work| + st_work.update_attribute("absence_penalty", student_work.absence_penalty) + end + end + end end homework_detail_manual.update_column('comment_status', 3) # 匿评关闭消息通知 给所有人发 From b123192286b3cd7ed682cbcd858e72ee122bff8f Mon Sep 17 00:00:00 2001 From: cxt Date: Sun, 9 Oct 2016 09:48:55 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=88=86=E7=BB=84=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E7=9A=84=E5=8C=BF=E8=AF=84=E5=88=86=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/homework_common_controller.rb | 38 +++++++++---------- app/helpers/application_helper.rb | 2 +- lib/tasks/homework_evaluation.rake | 38 +++++++++---------- 3 files changed, 39 insertions(+), 39 deletions(-) diff --git a/app/controllers/homework_common_controller.rb b/app/controllers/homework_common_controller.rb index 75e8df200..9fe29746e 100644 --- a/app/controllers/homework_common_controller.rb +++ b/app/controllers/homework_common_controller.rb @@ -202,24 +202,24 @@ class HomeworkCommonController < ApplicationController if @homework_detail_manual.comment_status == 1 student_works = @homework.student_works.has_committed if student_works && student_works.size >= 2 - if @homework.homework_type == 3 - student_work_projects = @homework.student_work_projects.where("student_work_id is not null") - student_work_projects.each_with_index do |pro_work, pro_index| - n = @homework_detail_manual.evaluation_num - n = n < student_works.size ? n : student_works.size - 1 - work_index = -1 - student_works.each_with_index do |stu_work, stu_index| - if stu_work.id.to_i == pro_work.student_work_id.to_i - work_index = stu_index - end - end - assigned_homeworks = get_assigned_homeworks(student_works, n, work_index) - assigned_homeworks.each do |h| - student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: pro_work.user_id, student_work_id: h.id) - student_works_evaluation_distributions.save - end - end - else + # if @homework.homework_type == 3 + # student_work_projects = @homework.student_work_projects.where("student_work_id is not null") + # student_work_projects.each_with_index do |pro_work, pro_index| + # n = @homework_detail_manual.evaluation_num + # n = n < student_works.size ? n : student_works.size - 1 + # work_index = -1 + # student_works.each_with_index do |stu_work, stu_index| + # if stu_work.id.to_i == pro_work.student_work_id.to_i + # work_index = stu_index + # end + # end + # assigned_homeworks = get_assigned_homeworks(student_works, n, work_index) + # assigned_homeworks.each do |h| + # student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: pro_work.user_id, student_work_id: h.id) + # student_works_evaluation_distributions.save + # end + # end + # else student_works.each_with_index do |work, index| user = work.user n = @homework_detail_manual.evaluation_num @@ -230,7 +230,7 @@ class HomeworkCommonController < ApplicationController student_works_evaluation_distributions.save end end - end + #end @homework_detail_manual.update_column('comment_status', 2) @homework_detail_manual.update_column('evaluation_start', Date.today) @statue = 1 diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 27e90b356..07f3c30e3 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -2829,7 +2829,7 @@ module ApplicationHelper link_to "补交作品(#{count})", new_student_work_url_without_domain(homework.id),:class => 'c_red' end else - if homework.homework_detail_manual && homework.homework_detail_manual.comment_status == 2 && StudentWorksEvaluationDistribution.where("student_work_id = #{work.id}").count > 0 #匿评作业,且作业状态不是在开启匿评之前 + if homework.homework_detail_manual && homework.homework_detail_manual.comment_status == 2 && StudentWorksEvaluationDistribution.where("student_work_id = #{work.id}").count > 0 && work.user_id == User.current.id #匿评作业,且作业状态不是在开启匿评之前 link_to "作品匿评", student_work_index_url_in_org(homework.id, 2), :class => 'c_blue', :title => "开启匿评后不可修改作品" elsif homework.homework_detail_manual && homework.homework_detail_manual.comment_status == 3 link_to "查看作品(#{count})",student_work_index_url_in_org(homework.id, 2), :class => 'c_blue', :title => "匿评已结束" diff --git a/lib/tasks/homework_evaluation.rake b/lib/tasks/homework_evaluation.rake index 65edcec9f..448137441 100644 --- a/lib/tasks/homework_evaluation.rake +++ b/lib/tasks/homework_evaluation.rake @@ -14,24 +14,24 @@ namespace :homework_evaluation do if homework_common.anonymous_comment == 0 && homework_detail_manual.comment_status == 1 #新建状态才可开启匿评 student_works = homework_common.student_works.has_committed if student_works && student_works.size >= 2 - if homework_common.homework_type == 3 - student_work_projects = homework_common.student_work_projects.where("student_work_id is not null") - student_work_projects.each_with_index do |pro_work, pro_index| - n = homework_detail_manual.evaluation_num - n = n < student_works.size ? n : student_works.size - 1 - work_index = -1 - student_works.each_with_index do |stu_work, stu_index| - if stu_work.id.to_i == pro_work.student_work_id.to_i - work_index = stu_index - end - end - assigned_homeworks = get_assigned_homeworks(student_works, n, work_index) - assigned_homeworks.each do |h| - student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: pro_work.user_id, student_work_id: h.id) - student_works_evaluation_distributions.save - end - end - else + # if homework_common.homework_type == 3 + # student_work_projects = homework_common.student_work_projects.where("student_work_id is not null") + # student_work_projects.each_with_index do |pro_work, pro_index| + # n = homework_detail_manual.evaluation_num + # n = n < student_works.size ? n : student_works.size - 1 + # work_index = -1 + # student_works.each_with_index do |stu_work, stu_index| + # if stu_work.id.to_i == pro_work.student_work_id.to_i + # work_index = stu_index + # end + # end + # assigned_homeworks = get_assigned_homeworks(student_works, n, work_index) + # assigned_homeworks.each do |h| + # student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: pro_work.user_id, student_work_id: h.id) + # student_works_evaluation_distributions.save + # end + # end + # else student_works.each_with_index do |work, index| user = work.user n = homework_detail_manual.evaluation_num @@ -42,7 +42,7 @@ namespace :homework_evaluation do student_works_evaluation_distributions.save end end - end + #end homework_detail_manual.update_column('comment_status', 2) # 匿评开启消息邮件通知,# 所有人 #send_message_anonymous_comment(homework_common, 2) From c1e2642a61732d36a9a0690cf5803e7d2db414f3 Mon Sep 17 00:00:00 2001 From: cxt Date: Sun, 9 Oct 2016 09:56:36 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E5=A4=A7=E7=BA=B2?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E7=9A=84=E9=99=84=E4=BB=B6=E5=85=81=E8=AE=B8?= =?UTF-8?q?=E6=89=80=E6=9C=89=E4=BA=BA=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/application_helper.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 07f3c30e3..6474a0eae 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -2280,6 +2280,8 @@ module ApplicationHelper candown = true elsif attachment.container.class.to_s=="Memo" #论坛资源允许下载 candown = true + elsif attachment.container.class.to_s=="Syllabus" #论坛资源允许下载 + candown = true elsif attachment.container.class.to_s == "User" candown = (attachment.is_public == 1 || attachment.is_public == true || attachment.author_id == User.current.id) elsif attachment.container_type == "Bid" && attachment.container && attachment.container.courses