Allow programming groups to score exercises remotely

This commit is contained in:
Sebastian Serth
2023-11-01 23:56:56 +01:00
committed by Sebastian Serth
parent fe26378387
commit 3b05a44b9e
5 changed files with 19 additions and 7 deletions

View File

@ -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] =

View File

@ -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

View File

@ -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