Remove PairProgramming23Study and instead use LTI parameter

This commit is contained in:
kiragrammel
2023-10-13 14:03:00 +02:00
committed by Sebastian Serth
parent 5bbc94f1d1
commit b91a2b7ce0
7 changed files with 14 additions and 53 deletions

View File

@ -226,6 +226,7 @@ module Lti
@lti_parameters.save!
session[:external_user_id] = current_user.id
session[:pair_programming] = parameters[:custom_pair_programming] || false
rescue ActiveRecord::RecordNotUnique, ActiveRecord::RecordInvalid
retry
end

View File

@ -305,6 +305,7 @@ class ExercisesController < ApplicationController
# we are acting on behalf of a programming group
if current_user.admin?
session.delete(:pg_id)
session.delete(:pair_programming)
@current_contributor = current_user
else
return redirect_back(
@ -316,9 +317,9 @@ class ExercisesController < ApplicationController
# we are just acting on behalf of a single user who has already worked on this exercise as part of a programming group **in the context of the current study group**
session[:pg_id] = pg.id
@current_contributor = pg
elsif session[:pg_id].blank? && PairProgramming23Study.participate_in_pp?(current_user, @exercise) && PairProgramming23Study::FORCED_EXERCISE_IDS.include?(@exercise.id)
elsif session[:pg_id].blank? && session[:pair_programming] == 'mandatory'
return redirect_back(fallback_location: new_exercise_programming_group_path(@exercise))
elsif session[:pg_id].blank? && PairProgramming23Study.participate?(current_user, @exercise) && current_user.submissions.where(study_group_id: current_user.current_study_group_id, exercise: @exercise).none?
elsif session[:pg_id].blank? && session[:pair_programming] == 'optional' && current_user.submissions.where(study_group_id: current_user.current_study_group_id, exercise: @exercise).none?
Event.find_or_create_by(category: 'pp_work_alone', user: current_user, exercise: @exercise, data: nil, file_id: nil)
current_user.pair_programming_waiting_users&.find_by(exercise: @exercise)&.update(status: :worked_alone)
end

View File

@ -19,12 +19,15 @@ class SessionsController < ApplicationController
def create_through_lti
return redirect_to_survey if params[:custom_survey_id]
session.delete(:pg_id) # Remove any previous pg_id from the session
# Remove any previous pg_id and pair_programming option from the session
session.delete(:pg_id)
session.delete(:pair_programming)
store_lti_session_data(params)
store_nonce(params[:oauth_nonce])
if params[:custom_redirect_target]
redirect_to(URI.parse(params[:custom_redirect_target].to_s).path)
elsif PairProgramming23Study.participate?(current_user, @exercise)
elsif params[:custom_pair_programming]
redirect_to(new_exercise_programming_group_path(@exercise))
else
redirect_to(implement_exercise_path(@exercise),
@ -57,6 +60,7 @@ class SessionsController < ApplicationController
session.delete(:study_group_id)
session.delete(:embed_options)
session.delete(:pg_id)
session.delete(:pair_programming)
# In case we have another session as an internal user, we set the study group for this one
internal_user = find_or_login_current_user
@ -98,7 +102,6 @@ class SessionsController < ApplicationController
# add a user pseudo ID if applicable
qp[:xi_pseudo_id] = Digest::SHA256.hexdigest(current_user.external_id)
qp[:co_study_group_id] = current_user.current_study_group_id
qp[:co_pair_programming23_study] = PairProgramming23Study.participate_in_pp?(current_user, @exercise).to_s
qp[:co_rfcs] = current_user.request_for_comments.includes(:submission).where(submission: {study_group_id: current_user.current_study_group_id}).size.to_s
qp[:co_comments] = current_user.comments.includes(:submission).where(submission: {study_group_id: current_user.current_study_group_id}).size.to_s
end