Merge pull request #1582 from edx/jarv/create-user-admin-command
adding create_user script
This commit is contained in:
88
common/djangoapps/student/management/commands/create_user.py
Normal file
88
common/djangoapps/student/management/commands/create_user.py
Normal file
@@ -0,0 +1,88 @@
|
||||
from optparse import make_option
|
||||
from django.core.management.base import BaseCommand
|
||||
from student.models import CourseEnrollment, Registration
|
||||
from student.views import _do_create_account
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = """
|
||||
This command creates and registers a user in a given course
|
||||
as "audit", "verified" or "honor".
|
||||
|
||||
example:
|
||||
# Enroll a user test@example.com into the demo course
|
||||
# The username and name will default to "test"
|
||||
manage.py ... create_user -e test@example.com -p insecure -c edX/Open_DemoX/edx_demo_course -m verified
|
||||
"""
|
||||
|
||||
option_list = BaseCommand.option_list + (
|
||||
make_option('-m', '--mode',
|
||||
metavar='ENROLLMENT_MODE',
|
||||
dest='mode',
|
||||
default='honor',
|
||||
choices=('audit', 'verified', 'honor'),
|
||||
help='Enrollment type for user for a specific course'),
|
||||
make_option('-u', '--username',
|
||||
metavar='USERNAME',
|
||||
dest='username',
|
||||
default=None,
|
||||
help='Username, defaults to "user" in the email'),
|
||||
make_option('-n', '--name',
|
||||
metavar='NAME',
|
||||
dest='name',
|
||||
default=None,
|
||||
help='Name, defaults to "user" in the email'),
|
||||
make_option('-p', '--password',
|
||||
metavar='NAME',
|
||||
dest='password',
|
||||
default=None,
|
||||
help='Password for user'),
|
||||
make_option('-e', '--email',
|
||||
metavar='EMAIL',
|
||||
dest='email',
|
||||
default=None,
|
||||
help='Email for user'),
|
||||
make_option('-c', '--course',
|
||||
metavar='COURSE_ID',
|
||||
dest='course',
|
||||
default=None,
|
||||
help='course to enroll the user in (optional)'),
|
||||
make_option('-s', '--staff',
|
||||
metavar='COURSE_ID',
|
||||
dest='staff',
|
||||
default=False,
|
||||
action='store_true',
|
||||
help='give user the staff bit'),
|
||||
)
|
||||
|
||||
def handle(self, *args, **options):
|
||||
username = options['username']
|
||||
name = options['name']
|
||||
if not username:
|
||||
username = options['email'].split('@')[0]
|
||||
if not name:
|
||||
name = options['email'].split('@')[0]
|
||||
|
||||
post_data = {
|
||||
'username': username,
|
||||
'email': options['email'],
|
||||
'password': options['password'],
|
||||
'name': name,
|
||||
'honor_code': u'true',
|
||||
'terms_of_service': u'true',
|
||||
}
|
||||
create_account = _do_create_account(post_data)
|
||||
if isinstance(create_account, tuple):
|
||||
user = create_account[0]
|
||||
if options['staff']:
|
||||
user.is_staff = True
|
||||
user.save()
|
||||
reg = Registration.objects.get(user=user)
|
||||
reg.activate()
|
||||
reg.save()
|
||||
else:
|
||||
print create_account
|
||||
user = User.objects.get(email=options['email'])
|
||||
if options['course']:
|
||||
CourseEnrollment.enroll(user, options['course'], mode=options['mode'])
|
||||
Reference in New Issue
Block a user