Allow programming groups to score exercises remotely
This commit is contained in:

committed by
Sebastian Serth

parent
fe26378387
commit
3b05a44b9e
@ -54,6 +54,7 @@ class RemoteEvaluationController < ApplicationController
|
||||
validation_token = remote_evaluation_params[:validation_token]
|
||||
if (remote_evaluation_mapping = RemoteEvaluationMapping.find_by(validation_token:))
|
||||
@current_user = remote_evaluation_mapping.user
|
||||
@current_contributor = remote_evaluation_mapping.programming_group || remote_evaluation_mapping.user
|
||||
@submission = Submission.create(build_submission_params(cause, remote_evaluation_mapping))
|
||||
feedback = @submission.calculate_score(remote_evaluation_mapping.user)
|
||||
{message: I18n.t('exercises.editor.run_success'), status: 201, feedback:}
|
||||
@ -80,7 +81,7 @@ class RemoteEvaluationController < ApplicationController
|
||||
files_attributes = remote_evaluation_params[:files_attributes]
|
||||
submission_params = remote_evaluation_params.except(:validation_token)
|
||||
submission_params[:exercise] = remote_evaluation_mapping.exercise
|
||||
submission_params[:user] = remote_evaluation_mapping.user
|
||||
submission_params[:contributor] = current_contributor
|
||||
submission_params[:study_group_id] = remote_evaluation_mapping.study_group_id
|
||||
submission_params[:cause] = cause
|
||||
submission_params[:files_attributes] =
|
||||
|
@ -358,17 +358,17 @@ class SubmissionsController < ApplicationController
|
||||
end
|
||||
|
||||
def create_remote_evaluation_mapping
|
||||
user = @submission.user
|
||||
exercise_id = @submission.exercise_id
|
||||
programming_group = current_contributor if current_contributor.programming_group?
|
||||
|
||||
remote_evaluation_mapping = RemoteEvaluationMapping.create(
|
||||
user:,
|
||||
exercise_id:,
|
||||
user: current_user,
|
||||
programming_group:,
|
||||
exercise: @submission.exercise,
|
||||
study_group_id: session[:study_group_id]
|
||||
)
|
||||
|
||||
# create .co file
|
||||
path = "tmp/#{user.id}.co"
|
||||
path = "tmp/#{current_user.id}.co"
|
||||
# parse validation token
|
||||
content = "#{remote_evaluation_mapping.validation_token}\n"
|
||||
# parse remote request url
|
||||
|
@ -5,6 +5,7 @@ class RemoteEvaluationMapping < ApplicationRecord
|
||||
include Creation
|
||||
before_create :generate_token, unless: :validation_token?
|
||||
belongs_to :exercise
|
||||
belongs_to :programming_group, optional: true
|
||||
belongs_to :study_group, optional: true
|
||||
|
||||
def generate_token
|
||||
|
Reference in New Issue
Block a user