Merge pull request #541 from MITx/feature/ichuang/add-manage-course-groups-command
add manage_course_groups command to lms_migration
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user