Skip to content

Commit 2bce809

Browse files
committed
Refactor access to latest submission
With these changes, it becomes easier to modify the access scopes given for various users.
1 parent d48f78c commit 2bce809

File tree

5 files changed

+8
-9
lines changed

5 files changed

+8
-9
lines changed

app/controllers/community_solutions_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,6 @@ def set_community_solution_lock
101101

102102
def set_exercise_and_submission
103103
@exercise = @community_solution.exercise
104-
@submission = current_contributor.submissions.final.where(exercise: @community_solution.exercise).order(created_at: :desc).first
104+
@submission = @community_solution.exercise.final_submission(current_contributor)
105105
end
106106
end

app/controllers/exercises_controller.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -548,8 +548,7 @@ def external_user_statistics
548548
end
549549
end
550550
else
551-
final_submissions = policy_scope(Submission).where(contributor: @external_user,
552-
exercise_id: @exercise.id).final
551+
final_submissions = policy_scope(Submission).where(contributor: @external_user, exercise: @exercise)
553552
submissions = []
554553
%i[before_deadline within_grace_period after_late_deadline].each do |filter|
555554
relevant_submission = final_submissions.send(filter).latest

app/controllers/user_exercise_feedbacks_controller.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def create
5959

6060
def update
6161
submission = begin
62-
current_contributor.submissions.where(exercise: @exercise).order(created_at: :desc).final.first
62+
@exercise.final_submission(current_contributor)
6363
rescue StandardError
6464
nil
6565
end
@@ -116,10 +116,10 @@ def uef_params
116116
params[:user_exercise_feedback][:exercise_id]
117117
end
118118

119-
latest_submission = Submission
120-
.where(contributor: current_contributor, exercise_id:)
121-
.order(created_at: :desc).final.first
119+
exercise = Exercise.find(exercise_id)
120+
authorize(exercise, :implement?)
122121

122+
latest_submission = exercise.final_submission(current_contributor)
123123
authorize(latest_submission, :show?)
124124

125125
params[:user_exercise_feedback]

app/views/exercises/statistics.html.slim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ h1 = @exercise
7878
td = link_to_if symbol == :external_users && policy(contributor).statistics?, label, {controller: 'exercises', action: 'external_user_statistics', external_user_id: contributor.id, id: @exercise.id}
7979
td = us['maximum_score'] || 0
8080
td.align-middle
81-
- latest_user_submission = submissions.where(contributor:).final.latest
81+
- latest_user_submission = @exercise.final_submission(contributor)
8282
- if latest_user_submission.present?
8383
- if latest_user_submission.before_deadline?
8484
.deadline-result.positive-result

app/views/external_users/statistics.html.slim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ h1 = t('.title', user: @user.displayname)
2323
td = link_to exercise, controller: 'exercises', action: 'external_user_statistics', external_user_id: @user.id, id: exercise.id
2424
td = stats['maximum_score'] || 0
2525
td.align-middle
26-
- latest_viewable_submission = submissions.where(exercise:).final.latest
26+
- latest_viewable_submission = exercise.final_submission(@user)
2727
- if latest_viewable_submission.present?
2828
- if latest_viewable_submission.before_deadline?
2929
.deadline-result.positive-result.before_deadline

0 commit comments

Comments
 (0)