# Copyright (c) 2023-present Plane Software, Inc. and contributors # SPDX-License-Identifier: AGPL-3.0-only # See the LICENSE file for details. # Django imports from django.core.management.base import BaseCommand, CommandError # Module imports from plane.license.models import Instance, InstanceAdmin from plane.db.models import User class Command(BaseCommand): help = "Add a new instance admin" def add_arguments(self, parser): # Positional argument parser.add_argument("admin_email", type=str, help="Instance Admin Email") def handle(self, *args, **options): admin_email = options.get("admin_email", False) if not admin_email: raise CommandError("Please provide the email of the admin.") user = User.objects.filter(email=admin_email).first() if user is None: raise CommandError("User with the provided email does not exist.") try: # Get the instance instance = Instance.objects.last() # Get or create an instance admin _, created = InstanceAdmin.objects.get_or_create(user=user, instance=instance, role=20) if not created: raise CommandError("The provided email is already an instance admin.") self.stdout.write(self.style.SUCCESS("Successfully created the admin")) except Exception as e: print(e) raise CommandError("Failed to create the instance admin.")