75 lines
1.8 KiB
Python
75 lines
1.8 KiB
Python
#!/usr/bin/python
|
|
#
|
|
# File: manage_class_groups
|
|
#
|
|
# list and edit membership in class staff group
|
|
|
|
import os, sys, string, re
|
|
import datetime
|
|
from getpass import getpass
|
|
import json
|
|
import readline
|
|
|
|
sys.path.append(os.path.abspath('.'))
|
|
os.environ['DJANGO_SETTINGS_MODULE'] = 'lms.envs.dev'
|
|
|
|
#try:
|
|
# from lms.envs.dev import *
|
|
#except Exception as err:
|
|
# print "Run this script from the top-level mitx directory (mitx_all/mitx), not a subdirectory."
|
|
# sys.exit(-1)
|
|
|
|
from django.conf import settings
|
|
from django.contrib.auth.models import User, Group
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# get all staff groups
|
|
|
|
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)
|
|
|
|
|
|
|