Add option to suppress feedback messages

This is used to dynamically exclude some test results from being shown to users, but still allows them to run in the background (e.g., for research).
This commit is contained in:
Sebastian Serth
2023-07-27 10:38:49 +02:00
parent 5faf5be033
commit db56a690c7
9 changed files with 20 additions and 35 deletions

View File

@ -34,7 +34,7 @@ module FileParameters
def file_attributes
%w[content context_id feedback_message file_id file_type_id hidden id name native_file path read_only role weight
file_template_id]
file_template_id hidden_feedback]
end
private :file_attributes
end

View File

@ -49,6 +49,7 @@ module CodeOcean
validates :feedback_message, absence: true, unless: :teacher_defined_assessment?
validates :hashed_content, if: :content_present?, presence: true
validates :hidden, inclusion: [true, false]
validates :hidden_feedback, inclusion: [true, false]
validates :name, presence: true
validates :read_only, inclusion: [true, false]
validates :role, inclusion: {in: ROLES}

View File

@ -283,7 +283,7 @@ class Submission < ApplicationRecord
end
output.merge!(assessment)
output.merge!(filename:, message: feedback_message(file, output), weight: file.weight)
output.merge!(filename:, message: feedback_message(file, output), weight: file.weight, hidden_feedback: file.hidden_feedback)
output.except!(:messages)
end
@ -329,12 +329,6 @@ class Submission < ApplicationRecord
end
end
# Return all test results except for those of a linter if not allowed
show_linter = Python20CourseWeek.show_linter? exercise
outputs&.reject do |output|
next if show_linter || output.blank?
output[:file_role] == 'teacher_defined_linter'
end
outputs&.reject {|output| output[:hidden_feedback] if output.present? }
end
end

View File

@ -30,10 +30,14 @@ li.card.mt-2
label.form-check-label
= f.check_box(:hidden, class: 'form-check-input')
= t('activerecord.attributes.file.hidden')
.form-check.mb-3
.form-check
label.form-check-label
= f.check_box(:read_only, class: 'form-check-input')
= t('activerecord.attributes.file.read_only')
.form-check.mb-3
label.form-check-label
= f.check_box(:hidden_feedback, class: 'form-check-input')
= t('activerecord.attributes.file.hidden_feedback')
.test-related-fields style="display: #{f.object.teacher_defined_assessment? ? 'initial' : 'none'};"
.mb-3
= f.label(:name, t('activerecord.attributes.file.feedback_message'), class: 'form-label')