Skip to content

Commit

Permalink
Optimize empty submission querying in GradesController#filter_empty_s…
Browse files Browse the repository at this point in the history
…ubmissions (#7381)
  • Loading branch information
hemmatio authored Jan 25, 2025
1 parent cae433b commit 10a7584
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 4 deletions.
1 change: 1 addition & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
- Ensures row selection for peer reviewer unassigning has the same validation checks as individual selections (#7274)
- Ensures mark levels on a rubric criterion are properly scaled when its max mark is updated (#7311)
- Refactor contributors list in About section to read from markus-contributors.txt (#7374)
- Optimized the querying of submissions when assigning graders (#7381)

### 🔧 Internal changes

Expand Down
6 changes: 2 additions & 4 deletions app/controllers/graders_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -253,10 +253,8 @@ def unassign_graders(grouping_ids, grader_ids)

# Returns array of grouping ids with non empty submissions
def filter_empty_submissions(grouping_ids)
grouping_ids.select do |grouping_id|
submission = Submission.find_by(grouping_id: grouping_id, submission_version_used: true)
submission && !submission.is_empty
end
Submission.where(grouping_id: grouping_ids, is_empty: false, submission_version_used: true)
.pluck(:grouping_id)
end

def filter_grouping_by_section(section_assignments, assignment)
Expand Down
33 changes: 33 additions & 0 deletions spec/controllers/graders_controller_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -561,6 +561,7 @@
@grouping1 = create(:grouping, assignment: @assignment)
@grouping2 = create(:grouping, assignment: @assignment)
@grouping3 = create(:grouping, assignment: @assignment)
@grouping4 = create(:grouping, assignment: @assignment)
@ta1 = create(:ta)
@ta2 = create(:ta)
@ta3 = create(:ta)
Expand Down Expand Up @@ -762,6 +763,38 @@
end
end
end

context 'and when assigning to multiple groupings and skip_empty_submissions is true' do
before do
# defining submissions for use in the 'asisgn' post
submission
submission2
submission3
submission4
post_as @instructor,
:global_actions,
params: { course_id: course.id, assignment_id: @assignment.id, global_actions: 'assign',
groupings: [@grouping1.id, @grouping2.id, @grouping3.id, @grouping4.id],
graders: [@ta1.id], current_table: 'groups_table', skip_empty_submissions: 'true' }
end

context 'and some groups have empty submissions while some do not' do
let(:submission) { create(:version_used_submission, grouping: @grouping1, is_empty: true) }
let(:submission2) { create(:version_used_submission, grouping: @grouping2, is_empty: false) }
let(:submission3) { create(:version_used_submission, grouping: @grouping3, is_empty: true) }
let(:submission4) { create(:version_used_submission, grouping: @grouping4, is_empty: false) }

it 'should not assign graders to groups with empty submissions' do
expect(@grouping1.tas).to be_empty
expect(@grouping3.tas).to be_empty
end

it 'should assign graders to groups with non-empty submissions' do
expect(@grouping2.tas).to include(@ta1)
expect(@grouping4.tas).to include(@ta1)
end
end
end
end

context 'POST on :global_actions on assign_sections' do
Expand Down

0 comments on commit 10a7584

Please sign in to comment.