diff --git a/app/controllers/remote_evaluation_controller.rb b/app/controllers/remote_evaluation_controller.rb index c3026e15..ba029f67 100644 --- a/app/controllers/remote_evaluation_controller.rb +++ b/app/controllers/remote_evaluation_controller.rb @@ -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] = diff --git a/app/controllers/submissions_controller.rb b/app/controllers/submissions_controller.rb index 3f935810..b9ae2f6f 100644 --- a/app/controllers/submissions_controller.rb +++ b/app/controllers/submissions_controller.rb @@ -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 diff --git a/app/models/remote_evaluation_mapping.rb b/app/models/remote_evaluation_mapping.rb index 4cd24a0c..c435bedc 100644 --- a/app/models/remote_evaluation_mapping.rb +++ b/app/models/remote_evaluation_mapping.rb @@ -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 diff --git a/db/migrate/20231101222855_add_programming_group_to_remote_evalution_mapping.rb b/db/migrate/20231101222855_add_programming_group_to_remote_evalution_mapping.rb new file mode 100644 index 00000000..d3a396d4 --- /dev/null +++ b/db/migrate/20231101222855_add_programming_group_to_remote_evalution_mapping.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddProgrammingGroupToRemoteEvalutionMapping < ActiveRecord::Migration[7.1] + def change + add_reference :remote_evaluation_mappings, :programming_group, index: true, null: true, foreign_key: true + end +end diff --git a/db/schema.rb b/db/schema.rb index 560eb378..50c8ce48 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.1].define(version: 2023_10_29_172331) do +ActiveRecord::Schema[7.1].define(version: 2023_11_01_222855) do # These are extensions that must be enabled in order to support this database enable_extension "pg_trgm" enable_extension "pgcrypto" @@ -454,6 +454,8 @@ ActiveRecord::Schema[7.1].define(version: 2023_10_29_172331) do t.datetime "updated_at" t.string "user_type" t.bigint "study_group_id" + t.bigint "programming_group_id" + t.index ["programming_group_id"], name: "index_remote_evaluation_mappings_on_programming_group_id" t.index ["study_group_id"], name: "index_remote_evaluation_mappings_on_study_group_id" end @@ -686,6 +688,7 @@ ActiveRecord::Schema[7.1].define(version: 2023_10_29_172331) do add_foreign_key "pair_programming_waiting_users", "programming_groups" add_foreign_key "programming_group_memberships", "programming_groups" add_foreign_key "programming_groups", "exercises" + add_foreign_key "remote_evaluation_mappings", "programming_groups" add_foreign_key "remote_evaluation_mappings", "study_groups" add_foreign_key "structured_error_attributes", "error_template_attributes" add_foreign_key "structured_error_attributes", "structured_errors"