Merge pull request #956 from MITx/feature/rocha/user-admin-commands
Add some extra console commands for handling user permissions
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
from optparse import make_option
|
||||
|
||||
from django.core.management.base import BaseCommand, CommandError
|
||||
from django.contrib.auth.models import User, Group
|
||||
|
||||
class Command(BaseCommand):
|
||||
option_list = BaseCommand.option_list + (
|
||||
make_option('--list',
|
||||
action='store_true',
|
||||
dest='list',
|
||||
default=False,
|
||||
help='List available groups'),
|
||||
make_option('--create',
|
||||
action='store_true',
|
||||
dest='create',
|
||||
default=False,
|
||||
help='Create the group if it does not exist'),
|
||||
make_option('--remove',
|
||||
action='store_true',
|
||||
dest='remove',
|
||||
default=False,
|
||||
help='Remove the user from the group instead of adding it'),
|
||||
)
|
||||
|
||||
args = '<user|email> <group>'
|
||||
help = 'Add a user to a group'
|
||||
|
||||
def print_groups(self):
|
||||
print 'Groups available:'
|
||||
for group in Group.objects.all().distinct():
|
||||
print ' ', group.name
|
||||
|
||||
def handle(self, *args, **options):
|
||||
if options['list']:
|
||||
self.print_groups()
|
||||
return
|
||||
|
||||
if len(args) != 2:
|
||||
raise CommandError('Usage is add_to_group {0}'.format(self.args))
|
||||
|
||||
name_or_email, group_name = args
|
||||
|
||||
if '@' in name_or_email:
|
||||
user = User.objects.get(email=name_or_email)
|
||||
else:
|
||||
user = User.objects.get(username=name_or_email)
|
||||
|
||||
try:
|
||||
group = Group.objects.get(name=group_name)
|
||||
except Group.DoesNotExist:
|
||||
if options['create']:
|
||||
group = Group(name=group_name)
|
||||
group.save()
|
||||
else:
|
||||
raise CommandError('Group {} does not exist'.format(group_name))
|
||||
|
||||
if options['remove']:
|
||||
user.groups.remove(group)
|
||||
else:
|
||||
user.groups.add(group)
|
||||
|
||||
print 'Success!'
|
||||
@@ -1,37 +1,47 @@
|
||||
from optparse import make_option
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
from django.core.management.base import BaseCommand, CommandError
|
||||
import re
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
option_list = BaseCommand.option_list + (
|
||||
make_option('--unset',
|
||||
action='store_true',
|
||||
dest='unset',
|
||||
default=False,
|
||||
help='Set is_staff to False instead of True'),
|
||||
)
|
||||
|
||||
args = '<user/email user/email ...>'
|
||||
args = '<user|email> [user|email ...]>'
|
||||
help = """
|
||||
This command will set isstaff to true for one or more users.
|
||||
This command will set is_staff to true for one or more users.
|
||||
Lookup by username or email address, assumes usernames
|
||||
do not look like email addresses.
|
||||
"""
|
||||
|
||||
def handle(self, *args, **kwargs):
|
||||
|
||||
def handle(self, *args, **options):
|
||||
if len(args) < 1:
|
||||
print Command.help
|
||||
return
|
||||
raise CommandError('Usage is set_staff {0}'.format(self.args))
|
||||
|
||||
for user in args:
|
||||
|
||||
if re.match('[^@]+@[^@]+\.[^@]+', user):
|
||||
try:
|
||||
v = User.objects.get(email=user)
|
||||
except:
|
||||
raise CommandError("User {0} does not exist".format(
|
||||
user))
|
||||
raise CommandError("User {0} does not exist".format(user))
|
||||
else:
|
||||
try:
|
||||
v = User.objects.get(username=user)
|
||||
except:
|
||||
raise CommandError("User {0} does not exist".format(
|
||||
user))
|
||||
raise CommandError("User {0} does not exist".format(user))
|
||||
|
||||
if options['unset']:
|
||||
v.is_staff = False
|
||||
else:
|
||||
v.is_staff = True
|
||||
|
||||
v.is_staff = True
|
||||
v.save()
|
||||
|
||||
print 'Success!'
|
||||
|
||||
@@ -1,18 +1,38 @@
|
||||
from optparse import make_option
|
||||
|
||||
from django.core.management.base import BaseCommand, CommandError
|
||||
from django_comment_client.models import Permission, Role
|
||||
from django_comment_client.models import Role
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
args = 'user role course_id'
|
||||
help = 'Assign a role to a user'
|
||||
option_list = BaseCommand.option_list + (
|
||||
make_option('--remove',
|
||||
action='store_true',
|
||||
dest='remove',
|
||||
default=False,
|
||||
help='Remove the role instead of adding it'),
|
||||
)
|
||||
|
||||
args = '<user|email> <role> <course_id>'
|
||||
help = 'Assign a discussion forum role to a user '
|
||||
|
||||
def handle(self, *args, **options):
|
||||
role = Role.objects.get(name=args[1], course_id=args[2])
|
||||
if len(args) != 3:
|
||||
raise CommandError('Usage is assign_role {0}'.format(self.args))
|
||||
|
||||
if '@' in args[0]:
|
||||
user = User.objects.get(email=args[0])
|
||||
name_or_email, role, course_id = args
|
||||
|
||||
role = Role.objects.get(name=role, course_id=course_id)
|
||||
|
||||
if '@' in name_or_email:
|
||||
user = User.objects.get(email=name_or_email)
|
||||
else:
|
||||
user = User.objects.get(username=args[0])
|
||||
user = User.objects.get(username=name_or_email)
|
||||
|
||||
user.roles.add(role)
|
||||
if options['remove']:
|
||||
user.roles.remove(role)
|
||||
else:
|
||||
user.roles.add(role)
|
||||
|
||||
print 'Success!'
|
||||
|
||||
Reference in New Issue
Block a user