diff --git a/lms/djangoapps/lms_migration/management/commands/manage_course_groups.py b/lms/djangoapps/lms_migration/management/commands/manage_course_groups.py new file mode 100644 index 0000000000..f3a39db5ca --- /dev/null +++ b/lms/djangoapps/lms_migration/management/commands/manage_course_groups.py @@ -0,0 +1,76 @@ +#!/usr/bin/python +# +# File: manage_course_groups +# +# interactively list and edit membership in course staff and instructor groups + +import os, sys, string, re +import datetime +from getpass import getpass +import json +import readline + +from django.core.management.base import BaseCommand +from django.conf import settings +from django.contrib.auth.models import User, Group + +#----------------------------------------------------------------------------- +# get all staff groups + +class Command(BaseCommand): + help = "Manage course group membership, interactively." + + def handle(self, *args, **options): + + gset = Group.objects.all() + + print "Groups:" + for cnt,g in zip(range(len(gset)), gset): + print "%d. %s" % (cnt,g) + + gnum = int(raw_input('Choose group to manage (enter #): ')) + + group = gset[gnum] + + #----------------------------------------------------------------------------- + # users in group + + uall = User.objects.all() + if uall.count()<50: + print "----" + print "List of All Users: %s" % [str(x.username) for x in uall] + print "----" + else: + print "----" + print "There are %d users, which is too many to list" % uall.count() + print "----" + + while True: + + print "Users in the group:" + + uset = group.user_set.all() + for cnt, u in zip(range(len(uset)), uset): + print "%d. %s" % (cnt, u) + + action = raw_input('Choose user to delete (enter #) or enter usernames (comma delim) to add: ') + + m = re.match('^[0-9]+$',action) + if m: + unum = int(action) + u = uset[unum] + print "Deleting user %s" % u + u.groups.remove(group) + + else: + for uname in action.split(','): + try: + user = User.objects.get(username=action) + except Exception as err: + print "Error %s" % err + continue + print "adding %s to group %s" % (user, group) + user.groups.add(group) + + +