Enable interventions for ProgrammingGroups and add indices
This commit is contained in:
@ -330,9 +330,8 @@ class ExercisesController < ApplicationController
|
||||
end
|
||||
|
||||
user_solved_exercise = @exercise.solved_by?(current_contributor)
|
||||
count_interventions_today = UserExerciseIntervention.where(user: current_user).where(created_at: Time.zone.now.beginning_of_day..).count
|
||||
user_got_intervention_in_exercise = UserExerciseIntervention.where(user: current_user,
|
||||
exercise: @exercise).size >= max_intervention_count_per_exercise
|
||||
count_interventions_today = current_contributor.user_exercise_interventions.where(created_at: Time.zone.now.beginning_of_day..).count
|
||||
user_got_intervention_in_exercise = current_contributor.user_exercise_interventions.where(exercise: @exercise).size >= max_intervention_count_per_exercise
|
||||
(user_got_enough_interventions = count_interventions_today >= max_intervention_count_per_day) || user_got_intervention_in_exercise
|
||||
|
||||
if @embed_options[:disable_interventions]
|
||||
@ -529,8 +528,7 @@ class ExercisesController < ApplicationController
|
||||
.includes(:exercise, testruns: [:testrun_messages, {file: [:file_type]}], files: [:file_type])
|
||||
@show_autosaves = params[:show_autosaves] == 'true' || submissions.where.not(cause: 'autosave').none?
|
||||
submissions = submissions.where.not(cause: 'autosave') unless @show_autosaves
|
||||
interventions = UserExerciseIntervention.where('user_id = ? AND exercise_id = ?', @external_user.id,
|
||||
@exercise.id)
|
||||
interventions = @external_user.user_exercise_interventions.where(exercise: @exercise)
|
||||
@all_events = (submissions + interventions).sort_by(&:created_at)
|
||||
@deltas = @all_events.map.with_index do |item, index|
|
||||
delta = item.created_at - @all_events[index - 1].created_at if index.positive?
|
||||
|
@ -2,12 +2,18 @@
|
||||
|
||||
class Intervention < ApplicationRecord
|
||||
has_many :user_exercise_interventions
|
||||
has_many :users, through: :user_exercise_interventions, source_type: 'ExternalUser'
|
||||
has_many :external_users, through: :user_exercise_interventions, source: :contributor, source_type: 'ExternalUser'
|
||||
has_many :internal_users, through: :user_exercise_interventions, source: :contributor, source_type: 'InternalUser'
|
||||
has_many :programming_groups, through: :user_exercise_interventions, source: :contributor, source_type: 'ProgrammingGroup'
|
||||
|
||||
def to_s
|
||||
name
|
||||
end
|
||||
|
||||
def contributors
|
||||
@contributors ||= internal_users.distinct + external_users.distinct + programming_groups.distinct
|
||||
end
|
||||
|
||||
def self.create_default_interventions
|
||||
%w[BreakIntervention QuestionIntervention].each do |name|
|
||||
Intervention.find_or_create_by(name:)
|
||||
|
@ -18,7 +18,7 @@ class User < ApplicationRecord
|
||||
has_many :submissions, as: :contributor
|
||||
has_many :participations, through: :submissions, source: :exercise, as: :user
|
||||
has_many :user_proxy_exercise_exercises, as: :user
|
||||
has_many :user_exercise_interventions, as: :user
|
||||
has_many :user_exercise_interventions, as: :contributor
|
||||
has_many :testruns, as: :user
|
||||
has_many :interventions, through: :user_exercise_interventions
|
||||
has_many :remote_evaluation_mappings, as: :user
|
||||
|
@ -1,7 +1,7 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class UserExerciseIntervention < ApplicationRecord
|
||||
include Creation
|
||||
include ContributorCreation
|
||||
belongs_to :intervention
|
||||
belongs_to :exercise
|
||||
end
|
||||
|
Reference in New Issue
Block a user