Commit 83f876ef by John Jarvis

Merge pull request #1582 from edx/jarv/create-user-admin-command

adding create_user script
parents b4895140 24524ef3
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'])
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment