diff --git a/common/djangoapps/student/management/commands/set_staff.py b/common/djangoapps/student/management/commands/set_staff.py new file mode 100644 index 0000000000..5e7df1f585 --- /dev/null +++ b/common/djangoapps/student/management/commands/set_staff.py @@ -0,0 +1,37 @@ +from django.contrib.auth.models import User +from django.core.management.base import BaseCommand, CommandError +import re + + +class Command(BaseCommand): + + args = '' + help = """ + This command will set isstaff 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): + + if len(args) < 1: + print Command.help + return + + 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)) + else: + try: + v = User.objects.get(username=user) + except: + raise CommandError("User {0} does not exist".format( + user)) + + v.is_staff = True + v.save() diff --git a/rakefile b/rakefile index f5e26a208f..91c3a6dd2a 100644 --- a/rakefile +++ b/rakefile @@ -171,6 +171,12 @@ task "django-admin", [:action, :system, :env, :options] => [:predjango] do |t, a sh(django_admin(args.system, args.env, args.action, args.options)) end +desc "Set the staff bit for a user" +task :set_staff, [:user, :system, :env] do |t, args| + args.with_defaults(:env => 'dev', :system => 'lms', :options => '') + sh(django_admin(args.system, args.env, 'set_staff', args.user)) +end + task :package do FileUtils.mkdir_p(BUILD_DIR)