Add new file role teacher_defined_linter
This commit is contained in:
@ -19,11 +19,11 @@ module CodeOcean
|
||||
include DefaultValues
|
||||
|
||||
DEFAULT_WEIGHT = 1.0
|
||||
ROLES = %w(main_file reference_implementation regular_file executable_file teacher_defined_test user_defined_file user_defined_test)
|
||||
TEACHER_DEFINED_ROLES = ROLES - %w(user_defined_file)
|
||||
ROLES = %w[main_file reference_implementation regular_file executable_file teacher_defined_test user_defined_file user_defined_test teacher_defined_linter].freeze
|
||||
TEACHER_DEFINED_ROLES = ROLES - %w[user_defined_file]
|
||||
|
||||
after_initialize :set_default_values
|
||||
before_validation :clear_weight, unless: :teacher_defined_test?
|
||||
before_validation :clear_weight, unless: :teacher_defined_assessment?
|
||||
before_validation :hash_content, if: :content_present?
|
||||
before_validation :set_ancestor_values, if: :incomplete_descendent?
|
||||
|
||||
@ -45,19 +45,20 @@ module CodeOcean
|
||||
ROLES.each do |role|
|
||||
scope :"#{role}s", -> { where(role: role) }
|
||||
end
|
||||
scope :teacher_defined_assessments, -> { where(role: %w[teacher_defined_test teacher_defined_linter]) }
|
||||
|
||||
default_scope { order(name: :asc) }
|
||||
|
||||
validates :feedback_message, if: :teacher_defined_test?, presence: true
|
||||
validates :feedback_message, absence: true, unless: :teacher_defined_test?
|
||||
validates :feedback_message, if: :teacher_defined_assessment?, presence: true
|
||||
validates :feedback_message, absence: true, unless: :teacher_defined_assessment?
|
||||
validates :file_type_id, presence: true
|
||||
validates :hashed_content, if: :content_present?, presence: true
|
||||
validates :hidden, boolean_presence: true
|
||||
validates :name, presence: true
|
||||
validates :read_only, boolean_presence: true
|
||||
validates :role, inclusion: {in: ROLES}
|
||||
validates :weight, if: :teacher_defined_test?, numericality: true, presence: true
|
||||
validates :weight, absence: true, unless: :teacher_defined_test?
|
||||
validates :weight, if: :teacher_defined_assessment?, numericality: true, presence: true
|
||||
validates :weight, absence: true, unless: :teacher_defined_assessment?
|
||||
validates :file, presence: true if :context.is_a?(Submission)
|
||||
|
||||
validates_with FileNameValidator, fields: [:name, :path, :file_type_id]
|
||||
@ -75,6 +76,10 @@ module CodeOcean
|
||||
end
|
||||
private :clear_weight
|
||||
|
||||
def teacher_defined_assessment?
|
||||
teacher_defined_test? || teacher_defined_linter?
|
||||
end
|
||||
|
||||
def content_present?
|
||||
content? || native_file?
|
||||
end
|
||||
@ -111,7 +116,7 @@ module CodeOcean
|
||||
|
||||
def set_default_values
|
||||
set_default_values_if_present(content: '', hidden: false, read_only: false)
|
||||
set_default_values_if_present(weight: DEFAULT_WEIGHT) if teacher_defined_test?
|
||||
set_default_values_if_present(weight: DEFAULT_WEIGHT) if teacher_defined_assessment?
|
||||
end
|
||||
private :set_default_values
|
||||
|
||||
|
Reference in New Issue
Block a user