assign_role.py 1.12 KB
Newer Older
1 2
from optparse import make_option

3
from django.core.management.base import BaseCommand, CommandError
4
from django_comment_common.models import Role
5 6 7 8
from django.contrib.auth.models import User


class Command(BaseCommand):
9 10 11 12 13 14
    option_list = BaseCommand.option_list + (
        make_option('--remove',
                    action='store_true',
                    dest='remove',
                    default=False,
                    help='Remove the role instead of adding it'),
15
    )
16 17 18

    args = '<user|email> <role> <course_id>'
    help = 'Assign a discussion forum role to a user '
19 20

    def handle(self, *args, **options):
21 22 23 24 25 26 27 28 29 30 31
        if len(args) != 3:
            raise CommandError('Usage is assign_role {0}'.format(self.args))

        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=name_or_email)
32

33 34
        if options['remove']:
            user.roles.remove(role)
35
        else:
36
            user.roles.add(role)
37

38
        print 'Success!'