Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR is Step 1 of #196 -- is a new tab labeled "Groupings", which lets you create new groupings of the students. There can be two special cases already there:
Groupings can start out providing a generalization of the "shared project", i.e., the current shared project is just what's associated to the "entire course grouping".
However, you could create a new grouping called let say "Teams", and let's imagine that divide your 100 students into 25 groups of 4 at random. Then each group (in that Teams grouping) has one project created for it, and the project for a group gets the 4 students and the instructor and TA's added to it. The project is licensed, and I'm not worrying about student pay yet. Whenever you change the Teams grouping, e.g., by adding new students or moving students around, the collaborators on these projects get updated (and/or projects get created or deleted).
Step 2, which will be in another PR. When you make an assignment you can optionally configure it to use a grouping. The default grouping is the singleton grouping. However, you could equally make an assignment for any other grouping. When you do that everything basically works exactly as before except:
If you change the members of a group, then it's obvious what should happen (collaborators get added/removed). If you add a new group then it's just like adding a new student, so you have to explicitly assign the assignment.
I think I should not allow changing the grouping for an assignment, but I could. Basically, if you change from one grouping to another, it would just be completely 100% different state info. So if halfway through you completely change the grouping, then all the Assign... buttons would be setup as if you hadn't assigned anything yet. If you change the grouping back, then everything would be like it was right when you changed the grouping. This would properly reflect the actual files that are copied out, but the UI would discourage this (but not make it impossible).
I'm not even worrying about how to specify groupings above, but there are many ways: