From 8e7eef24a2e1a1eda91787d1c22e3053cd7b6500 Mon Sep 17 00:00:00 2001 From: ichuang Date: Thu, 23 Aug 2012 13:10:08 -0400 Subject: [PATCH 1/2] add manage_course_groups command to lms_migration --- .../commands/manage_course_groups.py | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 lms/djangoapps/lms_migration/management/commands/manage_course_groups.py 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..0043b483e0 --- /dev/null +++ b/lms/djangoapps/lms_migration/management/commands/manage_course_groups.py @@ -0,0 +1,71 @@ +#!/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() + print "----" + print "List of All Users: %s" % [str(x.username) for x in uall] + 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) + + + From dc52956c28d7b112cc4711994ad35a23bb939259 Mon Sep 17 00:00:00 2001 From: ichuang Date: Fri, 24 Aug 2012 14:09:57 -0400 Subject: [PATCH 2/2] don't list all users if too many --- .../management/commands/manage_course_groups.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lms/djangoapps/lms_migration/management/commands/manage_course_groups.py b/lms/djangoapps/lms_migration/management/commands/manage_course_groups.py index 0043b483e0..f3a39db5ca 100644 --- a/lms/djangoapps/lms_migration/management/commands/manage_course_groups.py +++ b/lms/djangoapps/lms_migration/management/commands/manage_course_groups.py @@ -36,9 +36,14 @@ class Command(BaseCommand): # users in group uall = User.objects.all() - print "----" - print "List of All Users: %s" % [str(x.username) for x in uall] - print "----" + 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: