From 1ce8e988830f0bce4810c8ad283805daffbb192c Mon Sep 17 00:00:00 2001 From: NarayanBavisetti Date: Tue, 12 Dec 2023 19:36:54 +0530 Subject: [PATCH 1/2] chore: instance script --- .../plane/app/management/commands/__init__.py | 0 .../app/management/commands/cloud_instance.py | 72 +++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 apiserver/plane/app/management/commands/__init__.py create mode 100644 apiserver/plane/app/management/commands/cloud_instance.py diff --git a/apiserver/plane/app/management/commands/__init__.py b/apiserver/plane/app/management/commands/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/apiserver/plane/app/management/commands/cloud_instance.py b/apiserver/plane/app/management/commands/cloud_instance.py new file mode 100644 index 0000000000..e6a6bdc6c5 --- /dev/null +++ b/apiserver/plane/app/management/commands/cloud_instance.py @@ -0,0 +1,72 @@ +# Python imports +import json +import secrets + +# Django imports +from django.core.management.base import BaseCommand, CommandError +from django.utils import timezone + +# Module imports +from plane.license.models import Instance, InstanceAdmin +from plane.db.models import User + + +class Command(BaseCommand): + help = "Check if instance in registered else register" + + def add_arguments(self, parser): + # Positional argument + parser.add_argument("admin_email", type=str, help="Admin Email") + + def handle(self, *args, **options): + with open("package.json", "r") as file: + # Load JSON content from the file + data = json.load(file) + + admin_email = options.get("admin_email", False) + + if not admin_email: + raise CommandError("admin email is required") + + user_count = User.objects.filter(is_bot=False).count() + + user = User.objects.filter(email=admin_email).first() + if user is None: + raise CommandError("User not found") + + try: + # Check if the instance is registered + instance = Instance.objects.first() + + if instance is None: + instance = Instance.objects.create( + instance_name="Plane Free", + instance_id=secrets.token_hex(12), + license_key=None, + api_key=secrets.token_hex(8), + version=data.get("version"), + last_checked_at=timezone.now(), + user_count=user_count, + is_verified=True, + is_setup_done=True, + is_signup_screen_visited=True, + ) + + # Get or create an instance admin + _ , created = InstanceAdmin.objects.get_or_create( + user=user, instance=instance, role=20, is_verified=True + ) + + if not created: + raise CommandError("given email is already an instance admin") + + self.stdout.write( + self.style.SUCCESS( + f"Successful" + ) + ) + except Exception as e: + print(e) + raise CommandError( + "Failure" + ) \ No newline at end of file From b2762b44a0c34bee69f51cf74a1e6aeaf5517af7 Mon Sep 17 00:00:00 2001 From: NarayanBavisetti Date: Thu, 14 Dec 2023 17:11:44 +0530 Subject: [PATCH 2/2] chore: changed instance name --- apiserver/plane/app/management/commands/cloud_instance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apiserver/plane/app/management/commands/cloud_instance.py b/apiserver/plane/app/management/commands/cloud_instance.py index e6a6bdc6c5..8e08f597ca 100644 --- a/apiserver/plane/app/management/commands/cloud_instance.py +++ b/apiserver/plane/app/management/commands/cloud_instance.py @@ -40,7 +40,7 @@ class Command(BaseCommand): if instance is None: instance = Instance.objects.create( - instance_name="Plane Free", + instance_name="Plane Cloud US", instance_id=secrets.token_hex(12), license_key=None, api_key=secrets.token_hex(8),