diff --git a/app/controllers/homework_common_controller.rb b/app/controllers/homework_common_controller.rb
index 3234d15c0..b7e4b9efd 100644
--- a/app/controllers/homework_common_controller.rb
+++ b/app/controllers/homework_common_controller.rb
@@ -82,6 +82,27 @@ class HomeworkCommonController < ApplicationController
@homework.publish_time = params[:homework_common][:publish_time]
end
homework_detail_manual = @homework.homework_detail_manual || HomeworkDetailManual.new
+ param_end_time = Time.parse(params[:homework_common][:end_time]).strftime("%Y-%m-%d")
+ homework_end_time = Time.parse(@homework.end_time.to_s).strftime("%Y-%m-%d")
+ if homework_end_time != param_end_time
+ if homework_end_time > param_end_time
+ @homework.student_works.where("work_status = 1").each do |st|
+ if param_end_time < Time.parse(st.commit_time.to_s).strftime("%Y-%m-%d")
+ st.late_penalty = @homework.late_penalty
+ st.work_status = 2
+ st.save
+ end
+ end
+ else
+ @homework.student_works.where("work_status = 2").each do |st|
+ if param_end_time >= Time.parse(st.commit_time.to_s).strftime("%Y-%m-%d")
+ st.late_penalty = 0
+ st.work_status = 1
+ st.save
+ end
+ end
+ end
+ end
@homework.end_time = params[:homework_common][:end_time] || Time.now
@homework.course_id = params[:course_id]
if params[:homework_type] && params[:homework_type].to_i != @homework.homework_type
diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb
index 7119d7c9f..3c0469e9b 100644
--- a/app/controllers/student_work_controller.rb
+++ b/app/controllers/student_work_controller.rb
@@ -587,6 +587,14 @@ class StudentWorkController < ApplicationController
if Time.parse(@homework.end_time.to_s).strftime("%Y-%m-%d") < Time.parse(Time.now.to_s).strftime("%Y-%m-%d")
student_work.late_penalty = @homework.late_penalty
student_work.work_status = 2
+ # 缺评扣分
+ if @homework.homework_detail_manual.no_anon_penalty == 0 && @homework.homework_detail_manual.comment_status == 3 && @homework.anonymous_comment == 0
+ work_ids = "(" + @homework.student_works.has_committed.map(&:id).join(",") + ")"
+ all_dis_eva = StudentWorksEvaluationDistribution.where("student_work_id IN #{work_ids}")
+ has_sw_count = all_dis_eva.select("distinct user_id").count
+ anon_count = all_dis_eva.count / has_sw_count
+ student_work.absence_penalty = @homework.homework_detail_manual.absence_penalty * anon_count
+ end
else
student_work.late_penalty = 0
student_work.work_status = 1
@@ -987,7 +995,7 @@ class StudentWorkController < ApplicationController
end
end
- no_anon_penalty = params[:no_anon_penalty] ? 1 : 0
+ no_anon_penalty = params[:no_anon_penalty] ? 0 : 1
if no_anon_penalty != homework_detail_manual.no_anon_penalty
homework_detail_manual.no_anon_penalty = no_anon_penalty
if homework_detail_manual.comment_status == 3 #当前作业处于匿评结束状态,修改缺评扣分才会修改每个作品应扣分的值
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index da7cfd849..93ae61d6a 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -1186,10 +1186,18 @@ class UsersController < ApplicationController
student_work = StudentWork.where(homework_common_id: homework.id, user_id: User.current.id).first
if student_work
- #提交作品时,计算是否迟交
+ # 提交作品时,计算是否迟交
if Time.parse(homework.end_time.to_s).strftime("%Y-%m-%d") < Time.parse(Time.now.to_s).strftime("%Y-%m-%d")
student_work.late_penalty = homework.late_penalty
student_work.work_status = 2
+ # 缺评扣分
+ if homework.homework_detail_manual.no_anon_penalty == 0 && homework.homework_detail_manual.comment_status == 3 && homework.anonymous_comment == 0
+ work_ids = "(" + homework.student_works.has_committed.map(&:id).join(",") + ")"
+ all_dis_eva = StudentWorksEvaluationDistribution.where("student_work_id IN #{work_ids}")
+ has_sw_count = all_dis_eva.select("distinct user_id").count
+ anon_count = all_dis_eva.count / has_sw_count
+ student_work.absence_penalty = homework.homework_detail_manual.absence_penalty * anon_count
+ end
else
student_work.late_penalty = 0
student_work.work_status = 1
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 86c30cadc..4d1979816 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -42,6 +42,11 @@ module ApplicationHelper
number > 10000 ? (number.to_f / 1000).round.to_s + "k" : number
end
+ # 判断某个课程是否包含仅对自己可见的作业
+ def course_has_score_open_common_homework course
+ course.homework_commons.select{|hc| hc.score_open == 0}.count > 0 ? true : false
+ end
+
# 隐藏项目以外的信息
# return: true 显示,false 不显示
def hidden_unproject_infos
diff --git a/app/views/courses/_course_heroes.html.erb b/app/views/courses/_course_heroes.html.erb
index bd285f9b0..b6bf0daa0 100644
--- a/app/views/courses/_course_heroes.html.erb
+++ b/app/views/courses/_course_heroes.html.erb
@@ -15,9 +15,15 @@
<% hero_homework_scores.each do |student_score| %>
<% if student_score.score.to_i != 0 %>
-
<%=link_to image_tag(url_to_avatar(student_score.user), :width => "35", :height => "35", :class=> "rankPortrait"),user_path(student_score.user) %>
- <%=link_to student_score.user.show_name, user_path(student_score.user), :title => student_score.user.show_name %>
- <%= student_score.score<0 ? 0 : student_score.score.to_i %>
+ <%=link_to image_tag(url_to_avatar(student_score.user), :width => "35", :height => "35", :class=> "rankPortrait"),user_path(student_score.user) %>
+ <%=link_to student_score.user.show_name, user_path(student_score.user), :title => student_score.user.show_name %>
+
+ <% if !(User.current.allowed_to?(:as_teacher, @course) || User.current.admin?) && User.current.id != student_score.user.id && course_has_score_open_common_homework(@course) %>
+ <%= "**" %>
+ <% else %>
+ <%= student_score.score<0 ? 0 : student_score.score.to_i %>
+ <% end %>
+
<% end %>
<% end %>
diff --git a/app/views/courses/_new_member_list.html.erb b/app/views/courses/_new_member_list.html.erb
index ac3c847a9..0e21eeb5d 100644
--- a/app/views/courses/_new_member_list.html.erb
+++ b/app/views/courses/_new_member_list.html.erb
@@ -86,22 +86,32 @@
<%= user.user_extensions.student_id %>
- <%= link_to format("%0.2f", hw_score), {
- :action => 'show_member_score',
- :member_id => member.id,
- :remote => true},
- :class => "" %>
+ <% if !is_teacher && User.current.id != member.user_id && course_has_score_open_common_homework(@course) %>
+ **
+ <% else %>
+ <%= link_to format("%0.2f", hw_score), {
+ :action => 'show_member_score',
+ :member_id => member.id,
+ :remote => true},
+ :class => "" %>
+ <% end %>
|
<%= ex_score %> |
<%= link_to act_score, {
- :action => 'show_member_act_score',
- :member_id => member.id,
- :remote => true},
- :class => '' %>
+ :action => 'show_member_act_score',
+ :member_id => member.id,
+ :remote => true},
+ :class => '' %>
|
- <%= format("%0.2f", sum) %>
+
+ <% if !is_teacher && User.current.id != member.user_id && course_has_score_open_common_homework(@course) %>
+ **
+ <% else %>
+ <%= format("%0.2f", sum) %>
+ <% end %>
+
- <%= reply.content.gsub(/script/, "script ").html_safe %>
+ <%= reply.content.gsub(/\/script/, "script").gsub(/script/, " script").html_safe %>
diff --git a/app/views/repositories/show.html.erb b/app/views/repositories/show.html.erb
index 05b8d40d0..282df48c3 100644
--- a/app/views/repositories/show.html.erb
+++ b/app/views/repositories/show.html.erb
@@ -27,17 +27,17 @@
<% unless @entries.nil? %>
ZIP下载
- <%# if User.current.member_of?(@project) && @project.is_public? %>
- <%# if quality_analysis(User.current.try(:login), @repository.id).nil? %>
- <%#= link_to "质量分析", quality_analysis_path(:id => @project.id, :repository_id => @repository.identifier, :rev => @rev, :default_branch => @g_default_branch, :type => "1"), :remote => true, :class => "btn_zipdown fr" %>
- <%# else %>
- <%#= link_to "重新分析", quality_analysis_path(:id => @project.id, :repository_id => @repository.identifier, :rev => @rev, :default_branch => @g_default_branch, :type => "2"), :remote => true, :class => "btn_zipdown fr" %>
- <%# end %>
- <%# end %>
+ <% if User.current.member_of?(@project) && @project.is_public? %>
+ <% if quality_analysis(User.current.try(:login), @repository.id).nil? %>
+ <%= link_to "质量分析", quality_analysis_path(:id => @project.id, :repository_id => @repository.identifier, :rev => @rev, :default_branch => @g_default_branch, :type => "1"), :remote => true, :class => "btn_zipdown fr" %>
+ <% else %>
+ <%= link_to "重新分析", quality_analysis_path(:id => @project.id, :repository_id => @repository.identifier, :rev => @rev, :default_branch => @g_default_branch, :type => "2"), :remote => true, :class => "btn_zipdown fr" %>
+ <% end %>
+ <% end %>
+ <% end %>
+ <% unless QualityAnalysis.where(:project_id => @project.id).first.nil? %>
+ <%= link_to "代码分析结果", project_quality_analysis_path(:project_id => @project.id), :class => "btn_zipdown fr" %>
<% end %>
- <%# unless QualityAnalysis.where(:project_id => @project.id).first.nil? %>
- <%#= link_to "代码分析结果", project_quality_analysis_path(:project_id => @project.id), :class => "btn_zipdown fr" %>
- <%# end %>
<%=link_to "代码统计", stats_repository_project_path(:id => @project.id, :repository_id => @repository.identifier, :rev => @rev, :creator => @creator, :default_branch => @g_default_branch ), :class => "fl vl_zip" %>
diff --git a/app/views/student_work/_evaluation_un_group_member_work.html.erb b/app/views/student_work/_evaluation_un_group_member_work.html.erb
index 257f1070c..709c7749b 100644
--- a/app/views/student_work/_evaluation_un_group_member_work.html.erb
+++ b/app/views/student_work/_evaluation_un_group_member_work.html.erb
@@ -23,46 +23,48 @@
- <%= !score_open || st.teacher_score.nil? ? "--" : format("%.1f",st.teacher_score)%>
+ <%= st.teacher_score.nil? ? "--" : (!score_open ? "**" : format("%.1f",st.teacher_score))%>
- <%= !score_open || st.teaching_asistant_score.nil? ? "--" : format("%.1f",st.teaching_asistant_score)%>
+ <%= st.teaching_asistant_score.nil? ? "--" : (!score_open ? "**" : format("%.1f",st.teaching_asistant_score))%>
<% if @homework.anonymous_comment == 0 %>
- <% if !score_open || st.student_score.nil? %>
+ <% if st.student_score.nil? %>
<% pro = @homework.student_work_projects.where("user_id = #{st.user_id}").first
if pro.nil? || pro.student_work_id == "" || pro.student_work_id.nil?
work = st
else
work = StudentWork.find pro.student_work_id
- end %>
- <% if !score_open %>
- --
- <% elsif @homework.homework_detail_manual.comment_status < 2 %>
+ end %>
+ <% if @homework.homework_detail_manual.comment_status < 2 %>
未参与
<% elsif @homework.homework_detail_manual.comment_status == 2 && work.student_works_evaluation_distributions.count != 0 %>
待匿评
<% elsif @homework.homework_detail_manual.comment_status == 3 && work.student_works_evaluation_distributions.count != 0 %>
- 未评分
+ 无评分
<% else %>
迟交
<% end %>
<% else %>
- <%= format("%.1f", st.student_score) %>
-
- (<%= anon_count %>)
-
-
- 现共有
- <%= anon_count %>
- 名学生进行了匿评,平均分为
- <%= format("%.1f", st.student_score) %> 分。
-
+ <% if !score_open %>
+ **
+ <% else %>
+ <%= format("%.1f", st.student_score) %>
+
+ (<%= anon_count %>)
+
+
+ 现共有
+ <%= anon_count %>
+ 名学生进行了匿评,平均分为
+ <%= format("%.1f", st.student_score) %> 分。
+
+ <% end %>
<% end %>
@@ -70,7 +72,7 @@
<% score = st.work_score %>
- <%= !score_open || score.nil? ? "--" : format("%.1f",score<0 ? 0 : score)%>
+ <%= score.nil? ? "--" : (!score_open ? "**" : format("%.1f",score<0 ? 0 : score))%>
<% unless !score_open || score.nil?%>
diff --git a/app/views/student_work/_evaluation_un_work.html.erb b/app/views/student_work/_evaluation_un_work.html.erb
index ef3f670af..b060e2ddd 100644
--- a/app/views/student_work/_evaluation_un_work.html.erb
+++ b/app/views/student_work/_evaluation_un_work.html.erb
@@ -53,25 +53,23 @@
<% end %>
|
- <%= !score_open || student_work.teacher_score.nil? ? "--" : format("%.1f",student_work.teacher_score)%>
+ <%= student_work.teacher_score.nil? ? "--" : (!score_open ? "**" : format("%.1f",student_work.teacher_score))%>
|
- <%= !score_open || student_work.teaching_asistant_score.nil? ? "--" : format("%.1f",student_work.teaching_asistant_score)%>
+ <%= student_work.teaching_asistant_score.nil? ? "--" : (!score_open ? "**" : format("%.1f",student_work.teaching_asistant_score)) %>
|
<% if @homework.homework_type == 2%>
- <%= !score_open || student_work.system_score.nil? ? "--" : format("%.1f",student_work.system_score)%>
+ <%= student_work.system_score.nil? ? "--" : (!score_open ? "**" : format("%.1f",student_work.system_score))%>
|
<% end%>
<% if @homework.anonymous_comment == 0%>
- <% if !score_open || student_work.student_score.nil? %>
- <% if !score_open %>
- --
- <% elsif student_work.work_status != 0 %>
+ <% if student_work.student_score.nil? %>
+ <% if student_work.work_status != 0 %>
<% if @homework.homework_detail_manual.comment_status < 2 %>
未参与
<% elsif @homework.homework_detail_manual.comment_status >= 2 && student_work.student_works_evaluation_distributions.count == 0 %>
@@ -79,24 +77,28 @@
<% elsif @homework.homework_detail_manual.comment_status == 2 && student_work.student_works_evaluation_distributions.count != 0 %>
待匿评
<% elsif @homework.homework_detail_manual.comment_status == 3 && student_work.student_works_evaluation_distributions.count != 0 %>
- 未评分
+ 无评分
<% end %>
<% else %>
--
<% end %>
<% else %>
- <%=format("%.1f",student_work.student_score) %>
-
- (<%= student_work.student_works_scores.where(:reviewer_role => 3).group_by(&:user_id).count%>)
-
-
-
-
- 现共有
- <%= student_work.student_works_scores.where(:reviewer_role => 3).group_by(&:user_id).count%>
- 名学生进行了匿评,平均分为
- <%= format("%.1f",student_work.student_score)%> 分。
-
+ <% if !score_open %>
+ **
+ <% else %>
+ <%=format("%.1f",student_work.student_score) %>
+
+ (<%= student_work.student_works_scores.where(:reviewer_role => 3).group_by(&:user_id).count%>)
+
+
+
+
+ 现共有
+ <%= student_work.student_works_scores.where(:reviewer_role => 3).group_by(&:user_id).count%>
+ 名学生进行了匿评,平均分为
+ <%= format("%.1f",student_work.student_score)%> 分。
+
+ <% end %>
<% end %>
|
<% end %>
@@ -107,7 +109,7 @@
<% score = student_work.respond_to?("score") ? student_work.score : (student_work.final_score || 0) - student_work.absence_penalty - student_work.late_penalty%>
<% end %>
- <%= !score_open || score.nil? ? "--" : format("%.1f",score<0 ? 0 : score)%>
+ <%= score.nil? ? "--" : (!score_open ? "**" : format("%.1f",score<0 ? 0 : score))%>
<% unless !score_open || score.nil?%>
diff --git a/app/views/student_work/_evaluation_work.html.erb b/app/views/student_work/_evaluation_work.html.erb
index 0e270af9e..43742bf8d 100644
--- a/app/views/student_work/_evaluation_work.html.erb
+++ b/app/views/student_work/_evaluation_work.html.erb
@@ -81,7 +81,7 @@
<% if @homework.homework_type == 2%>
- <%= !score_open || student_work.system_score.nil? ? "--" : format("%.1f",student_work.system_score)%>
+ <%= student_work.system_score.nil? ? "--" : (!score_open ? "**" : format("%.1f",student_work.system_score))%>
|
<% end%>
diff --git a/app/views/student_work/_student_work_score.html.erb b/app/views/student_work/_student_work_score.html.erb
index e7c201736..a8facff30 100644
--- a/app/views/student_work/_student_work_score.html.erb
+++ b/app/views/student_work/_student_work_score.html.erb
@@ -34,7 +34,7 @@
<% score.journals_for_messages.order("created_on desc").each do |jour|%>
- <% show_real_name = @is_teacher || score.reviewer_role != 3 %>
+ <% show_real_name = @is_teacher || score.reviewer_role != 3 || @homework.homework_detail_manual.comment_status != 2 %>
<%= render :partial => 'jour_replay',:locals => {:jour => jour, :show_real_name => show_real_name || jour.user == User.current}%>
<% end%>
diff --git a/app/views/users/_join_course_course_message.html.erb b/app/views/users/_join_course_course_message.html.erb
index eacbfac8c..78a6f2ecd 100644
--- a/app/views/users/_join_course_course_message.html.erb
+++ b/app/views/users/_join_course_course_message.html.erb
@@ -5,7 +5,7 @@
- <% content = User.find(ma.course_message_id).name+"申请成为课程\""+"#{Course.find(ma.course_id).name}"+"\"的"+"#{ma.content && ma.content.include?('9') ? "教师" : "助教"}" %>
+ <% content = User.find(ma.course_message_id).name+"申请成为班级\""+"#{Course.find(ma.course_id).name}"+"\"的"+"#{ma.content && ma.content.include?('9') ? "教师" : "助教"}" %>
<%= link_to content, user_path(User.find(ma.course_message_id), :course_id => ma.course_id),
:class => "#{ma.viewed==0 ? "newsBlack" : "newsGrey"}", :target => '_blank', :title => "#{content}" %>
@@ -17,9 +17,10 @@
<%= User.current.lastname + User.current.firstname %>老师您好!您有了新的班级成员申请,信息如下:
真实姓名:<%= User.find(ma.course_message_id).realname %>
- 申请课程:<%= Course.find(ma.course_id).name%>
- 课程描述:
- <%= Course.find(ma.course_id).description.html_safe if Course.find(ma.course_id).description %> 申请职位:<%=ma.content && ma.content.include?('9') ? "教师" : "教辅"%>
+ 申请班级:<%= Course.find(ma.course_id).name%>
+ 班级描述:
+ <%= Course.find(ma.course_id).description.html_safe if Course.find(ma.course_id).description %>
+ 申请职位:<%=ma.content && ma.content.include?('9') ? "教师" : "助教"%>
diff --git a/app/views/users/user_organizations.html.erb b/app/views/users/user_organizations.html.erb
index 7e4b28393..6f1b7db2f 100644
--- a/app/views/users/user_organizations.html.erb
+++ b/app/views/users/user_organizations.html.erb
@@ -3,7 +3,7 @@
- s
+
组织列表
新建组织
<%#= form_tag url_for(:controller => 'users', :action => 'search_user_orgs', :id => User.current.id), :method => 'get', :id => "search_org_form", :class=>"resourcesSearchloadBox", :style=>"float:right; margin-top:-5px;" do %>
diff --git a/db/migrate/20161206061652_update_student_work_score.rb b/db/migrate/20161206061652_update_student_work_score.rb
new file mode 100644
index 000000000..4fcd374ca
--- /dev/null
+++ b/db/migrate/20161206061652_update_student_work_score.rb
@@ -0,0 +1,19 @@
+class UpdateStudentWorkScore < ActiveRecord::Migration
+ def up
+ homework = HomeworkCommon.where("id = 4198").first
+ unless homework.nil?
+ homework.student_works.each do |st|
+ if st.late_penalty != 0 && Time.parse(homework.end_time.to_s).strftime("%Y-%m-%d") > Time.parse(st.commit_time.to_s).strftime("%Y-%m-%d")
+ if st.work_status == 2
+ st.work_status = 1
+ end
+ st.late_penalty = 0
+ st.save
+ end
+ end
+ end
+ end
+
+ def down
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index c61a33fc1..bd3645e2c 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended to check this file into your version control system.
-ActiveRecord::Schema.define(:version => 20161201083030) do
+ActiveRecord::Schema.define(:version => 20161128072528) do
create_table "activities", :force => true do |t|
t.integer "act_id", :null => false
@@ -820,13 +820,11 @@ ActiveRecord::Schema.define(:version => 20161201083030) do
t.integer "exercise_status"
t.integer "user_id"
t.integer "time"
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
+ t.datetime "created_at", :null => false
+ t.datetime "updated_at", :null => false
t.datetime "publish_time"
t.datetime "end_time"
t.integer "show_result"
- t.integer "question_random", :default => 0
- t.integer "choice_random", :default => 0
end
create_table "first_pages", :force => true do |t|
@@ -966,7 +964,6 @@ ActiveRecord::Schema.define(:version => 20161201083030) do
t.integer "homework_common_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
- t.integer "no_anon_penalty", :default => 1
end
create_table "homework_detail_programings", :force => true do |t|
|