More section control for group creation

This idea has been developed and deployed to Canvas

For additional information, please read through Canvas Production Release Notes (2016-12-10).


When creating groups with the option to "Split Students into X Groups" that should also have an option to restrict to same section.

 

Also, when viewing the groups and who is not in a group. There should be a filter by section option.

28 Comments
RobDitto
Community Champion

Voted! Since splitting students into groups is a form of random assignment, I believe this is similar to the old community's Option to Create Randomly-Assigned, Within-Section Groups.  That old feature discussion was of interest to mg2695,  @bbrown , Deactivated user, hallmans and others.

Our institution has some specific needs which seem to fit into this idea, but I wonder whether they actually need separate feature ideas. 

  • Does this feature idea apply to self-signup?  We'd like filtering by section to apply to students signing up for groups in a course.  Teachers here would like to enforce that, say,  Groups 1-10 are for students in Section 1 only, and Groups 11-20 are for students in Section 2 only.
  • Might this feature idea apply to combining subsets of sections for filtering/splitting?  Sometimes we need subsets of groups in a set/category/tab to apply to some, but not all, sections -- e.g., Groups 1-20 are for students in Sections 1 and 2, but Groups 21-30 are for Section 3 students only.  This use case is needed both for random assignment and self-signup.
woodsdm2
Community Contributor

Another useful option with group assignment would be to create some groups manually, and then randomly assign the remaining students.

I find that I usually have a mix - some students want to form their own groups and others don't care.  So I end up creating all of the groups manually.  First I create the groups that have organized themselves and then use an external tool to randomize the remaining students.

RobDitto
Community Champion

In your use case, would the random assignment at the end of group formation need to be within sections?

woodsdm2
Community Contributor

No - I don't make use of sections so all group assignments are from all students in the course.

RobDitto
Community Champion

Good to know, thanks. In keeping with the How to write a good feature idea submission guidelines, randomly assigning "laggards" who don't self-signup may need its own feature idea.

johnpj
Community Contributor

This may be implicit in your idea, but it is very useful to be able have a groups that includes all students in a section. We actually created an API script to do this in our instance of Canvas.

orwinr
Community Champion

If it isn't implicit, I would vote for the ability to add individuals to a group based on sections. We use Canvas for a number of student community sites with a number of sections and currently have to manually add and remove students from the groups that are created for each section. It would be awesome if I could create the group set and have an option that says: "Automatically create a  group for each section" and have it create a group for each section and enroll all of the students in their individual sections.

John, would you be willing to share your API script? I would be very interested in taking a look.

johnpj
Community Contributor

To  Create Groups Based on Sections

#!/usr/bin/perl -w

use strict;

my $serverName  = "https://myserver.instructure.com";

#

# Create 63 groups "Section 007" .. "Section 069" in group category id #70

#

my $groupPrefix   = "Section ";

my $firstGroupNum = 7;

my $lastGroupNum  = 69;

my $groupCatId = 70;

my $token = "user-generate-token";

my $curlTemplate = "curl  -H 'Authorization: Bearer $token' $serverName/api/v1/group_categories/$groupCatId/groups -F 'is_public=false' -F 'join_level=invitation_only' -F 'name=$groupPrefix%03d' -F 'description=Section %03d'";

for ( my $i=$firstGroupNum; $i<=$lastGroupNum; $i++ )

{

    my $curlString = sprintf($curlTemplate,$i, $i);

    `$curlString`;

}

To add Users to Groups

my $baseGroupId = 109;

my $serverName    = "https://myserver.instructure.com";

my $token = "user-generate-token";

my $curlTemplate ="curl -H 'Authorization: Bearer $token' $serverName/api/v1/groups/%d/invite -F 'invitees[]=%s'";

my $filename =  $ARGV[0];

# Read file

open FILE, $filename or die "$!";

my @lines = <FILE>;

close FILE;

# Read in CSV file (group,user) and add users to each group

# This assumes groups were created sequentially

foreach (@lines)

{

    chomp;

    my @userGroup = split /,/;

    my $curlString = sprintf($curlTemplate,$baseGroupId+$userGroup[1],$userGroup[0]);

    `$curlString`;

}

# Developed by Beth Kirschner

orwinr
Community Champion

Thanks John! I will tinker with the script and see if I can get it to work!

jordan
Instructure Alumni
Instructure Alumni

77296_pastedImage_0.png84918_pastedImage_0.png

Panda-Cat: A mythical creature that we dreamed up to catch your attention, make you laugh, and encourage you to keep reading the explanation of our archive process for Feature Ideas

Archive: An archived Feature Idea is not dead forever, but it has been taken out of stage progression.  When Community members submit feature ideas they are reviewed by the Community Team and then put to a vote by the community at large.  If the idea does not receive 100 votes within 3 months it will be archived.  Ideas that reach the 100 vote threshold within the first three months remain open for voting. Find more information about this process at How does the voting process work for feature ideas?

Can archived ideas still become a feature?  Yes.  Some feature ideas that do not receive 100 votes are resubmitted by Community members and find more supporters as people's needs change, rising more quickly to the top.  Oftentimes archived feature ideas are evaluated in groups when we are preparing to refactor a particular tool or feature of Canvas and may still influence product direction.