Skip to content

feat: Question variations support in assignment groups#97

Draft
Copilot wants to merge 3 commits intomasterfrom
copilot/add-question-variations-support
Draft

feat: Question variations support in assignment groups#97
Copilot wants to merge 3 commits intomasterfrom
copilot/add-question-variations-support

Conversation

Copy link
Copy Markdown

Copilot AI commented Apr 26, 2026

Assignment groups currently show every student the same set of assignments. This adds per-student variation support: a group can have a pool of assignments where each student is assigned only a subset (e.g., 2 of 4 possible questions).

Schema changes

  • AssignmentGroup.variation_count (int, default 0) — when > 0, students complete this many variation groups instead of all assignments
  • AssignmentGroupMembership.variation_group (nullable int) — NULL = required for everyone; positive integer = variation pool tag
  • New assignment_group_variation table — records the specific (user, group, assignment) triples representing each student's assigned subset

Model logic

AssignmentGroup.get_assignments(user_id=None) is extended to filter by variation when user_id is supplied and variation_count > 0:

# Returns required assignments + this user's variation assignments
group.get_assignments(user_id=student.id)

# Returns all assignments (backward-compatible)
group.get_assignments()

New helpers on AssignmentGroup:

  • get_variation_groups() — distinct variation pool numbers in use
  • assign_variation_to_user(user_id, assignment_ids) — explicit per-student assignment
  • assign_random_variation(user_id) — randomly selects variation_count pools and assigns

parse_assignment_load in controllers/helpers.py now passes user_id so students loading a group URL automatically see only their assigned subset.

New API endpoints (/assignment_group/)

Endpoint Method Purpose
/edit_variation_settings GET/POST Set variation_count and per-membership variation_group tags
/get_variations GET Read a user's assigned variation assignments
/assign_variation POST Instructor explicitly assigns specific assignments to a student
/assign_variations_random POST Bulk-randomize variation assignments for all enrolled students

Migration

Alembic migration b1c2d3e4f5a6 adds assignment_group.variation_count, assignment_group_membership.variation_group, and the assignment_group_variation table.

Copilot AI linked an issue Apr 26, 2026 that may be closed by this pull request
Copilot AI changed the title [WIP] Add question variations support in assignment groups feat: Question variations support in assignment groups Apr 26, 2026
Copilot AI requested a review from acbart April 26, 2026 17:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Question Variations Support in Assignment Groups

2 participants