from django.core.management.base import BaseCommand, CommandError from api.models import Project, Role, RoleMapping, User class Command(BaseCommand): help = 'Non-interactively create a rolemapping' @classmethod def add_arguments(self, parser): parser.add_argument('--rolename', default=None, help='The name of the role.') parser.add_argument('--username', default=None, help='The name of the user.') parser.add_argument('--projectname', default=None, help='The name of the project.') def handle(self, *args, **options): rolename = options.get('rolename') username = options.get('username') projectname = options.get('projectname') if not rolename or not username or not projectname: raise CommandError('--rolename --projectname --username are required for the rolemapping') if rolename and projectname and username: try: role = Role.objects.get(name=rolename) user = User.objects.get(username=username) project = Project.objects.get(name=projectname) rolemapping = RoleMapping.objects.create(role_id=role.id, user_id=user.id, project_id=project.id) except Exception as ex: self.stderr.write(self.style.ERROR('Error occurred while creating rolemapping "%s"' % ex)) else: self.stdout.write(self.style.SUCCESS('Rolemapping created successfully "%s"' % rolemapping.id))