Skip to content

Commit 9cc857f

Browse files
authored
Caching Manage Submissions Page (#2276)
* Caching some data from index, todo fix caching issues for submission data * Cached submission_ids instead of trying to do full data entries. * Changed expiration time of cache entries and allow for cache remake after new submission. * Uncommented necessary lines removed when testing. * Finished adding functionality of caching manage submissions. * Cleaned up code.
1 parent ccabc54 commit 9cc857f

File tree

2 files changed

+23
-9
lines changed

2 files changed

+23
-9
lines changed

app/controllers/assessment/handin.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ def handin
2727
return false
2828
end
2929

30+
# Clear cache since new submission made, need to remake cache
31+
Rails.cache.delete(["submission_ids", @assessment.id])
32+
Rails.cache.delete(["submissions_to_cud", @assessment.id])
33+
3034
if @assessment.embedded_quiz
3135
contents = params[:submission]["embedded_quiz_form_answer"].to_s
3236
out_file = Tempfile.new('out.txt-')

app/controllers/submissions_controller.rb

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,22 @@ class SubmissionsController < ApplicationController
1717

1818
action_auth_level :index, :instructor
1919
def index
20-
@submissions = @assessment.submissions.includes({ course_user_datum: :user })
21-
.order("created_at DESC")
20+
# cache ids instead of entire entries
21+
submission_ids = Rails.cache.fetch(["submission_ids", @assessment.id], expires_in: 1.day) do
22+
@assessment.submissions.order("created_at DESC").pluck(:id)
23+
end
24+
@submissions = Submission.where(id: submission_ids).includes({ course_user_datum: :user })
2225
@autograded = @assessment.has_autograder?
2326

24-
@submissions_to_cud = {}
25-
@submissions.each do |submission|
26-
currSubId = submission.id
27-
currCud = submission.course_user_datum_id
28-
@submissions_to_cud[currSubId] = currCud
29-
end
30-
@submissions_to_cud = @submissions_to_cud.to_json
27+
@submissions_to_cud =
28+
Rails.cache.fetch(["submissions_to_cud", @assessment.id], expires_in: 1.day) do
29+
submissions_to_cud = {}
30+
@submissions.each do |submission|
31+
submissions_to_cud[submission.id] = submission.course_user_datum_id
32+
end
33+
submissions_to_cud.to_json
34+
end
35+
3136
@excused_cids = []
3237
excused_students = AssessmentUserDatum.where(
3338
assessment_id: @assessment.id,
@@ -80,6 +85,10 @@ def score_details
8085

8186
action_auth_level :new, :instructor
8287
def new
88+
# Clear cache since new submission exists, need to remake
89+
Rails.cache.delete(["submission_ids", @assessment.id])
90+
Rails.cache.delete(["submissions_to_cud", @assessment.id])
91+
8392
@submission = @assessment.submissions.new(tweak: Tweak.new)
8493

8594
if !params["course_user_datum_id"].nil?
@@ -141,6 +150,7 @@ def create
141150
@submission.save_file(params[:submission])
142151
end
143152
end
153+
144154
flash[:success] =
145155
"#{ActionController::Base.helpers.pluralize(cud_ids.size, 'Submission')} Created"
146156
redirect_to course_assessment_submissions_path(@course, @assessment)

0 commit comments

Comments
 (0)