diff --git a/apiserver/plane/license/api/serializers/instance.py b/apiserver/plane/license/api/serializers/instance.py index 606bb643f..3b905e64d 100644 --- a/apiserver/plane/license/api/serializers/instance.py +++ b/apiserver/plane/license/api/serializers/instance.py @@ -13,7 +13,6 @@ class InstanceSerializer(BaseSerializer): model = Instance exclude = [ "license_key", - "user_count" ] read_only_fields = [ "id", diff --git a/apiserver/plane/license/bgtasks/tracer.py b/apiserver/plane/license/bgtasks/tracer.py index 26efb45ed..44b2be569 100644 --- a/apiserver/plane/license/bgtasks/tracer.py +++ b/apiserver/plane/license/bgtasks/tracer.py @@ -52,6 +52,17 @@ def instance_traces(): span.set_attribute( "is_telemetry_enabled", instance.is_telemetry_enabled ) + span.set_attribute( + "is_support_required", instance.is_support_required + ) + span.set_attribute("is_setup_done", instance.is_setup_done) + span.set_attribute( + "is_signup_screen_visited", instance.is_signup_screen_visited + ) + span.set_attribute("is_verified", instance.is_verified) + span.set_attribute("edition", instance.edition) + span.set_attribute("domain", instance.domain) + span.set_attribute("is_test", instance.is_test) span.set_attribute("user_count", user_count) span.set_attribute("workspace_count", workspace_count) span.set_attribute("project_count", project_count) diff --git a/apiserver/plane/license/management/commands/register_instance.py b/apiserver/plane/license/management/commands/register_instance.py index 09d13441c..965248183 100644 --- a/apiserver/plane/license/management/commands/register_instance.py +++ b/apiserver/plane/license/management/commands/register_instance.py @@ -1,6 +1,7 @@ # Python imports import json import secrets +import os # Django imports from django.core.management.base import BaseCommand, CommandError @@ -8,10 +9,7 @@ from django.utils import timezone from django.conf import settings # Module imports -from plane.license.models import Instance -from plane.db.models import ( - User, -) +from plane.license.models import Instance, EditiontTypes from plane.license.bgtasks.tracer import instance_traces @@ -32,7 +30,6 @@ class Command(BaseCommand): payload = { "instance_key": settings.INSTANCE_KEY, "version": data.get("version", 0.1), - "user_count": User.objects.filter(is_bot=False).count(), } return payload @@ -54,11 +51,11 @@ class Command(BaseCommand): instance = Instance.objects.create( instance_name="Plane Community Edition", instance_id=secrets.token_hex(12), - license_key=None, current_version=payload.get("version"), latest_version=payload.get("version"), last_checked_at=timezone.now(), - user_count=payload.get("user_count", 0), + is_test=os.environ.get("IS_TEST", "0") == "1", + edition=EditiontTypes.PLANE_CE.value, ) self.stdout.write(self.style.SUCCESS("Instance registered")) @@ -69,9 +66,10 @@ class Command(BaseCommand): payload = self.read_package_json() # Update the instance details instance.last_checked_at = timezone.now() - instance.user_count = payload.get("user_count", 0) instance.current_version = payload.get("version") instance.latest_version = payload.get("version") + instance.is_test = os.environ.get("IS_TEST", "0") == "1" + instance.edition = EditiontTypes.PLANE_CE.value instance.save() # Call the instance traces task diff --git a/apiserver/plane/license/migrations/0005_rename_product_instance_edition_and_more.py b/apiserver/plane/license/migrations/0005_rename_product_instance_edition_and_more.py new file mode 100644 index 000000000..7b7a6bfd5 --- /dev/null +++ b/apiserver/plane/license/migrations/0005_rename_product_instance_edition_and_more.py @@ -0,0 +1,31 @@ +# Generated by Django 4.2.15 on 2024-11-19 14:04 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('license', '0004_changelog_deleted_at_instance_deleted_at_and_more'), + ] + + operations = [ + migrations.RenameField( + model_name='instance', + old_name='product', + new_name='edition', + ), + migrations.RemoveField( + model_name='instance', + name='license_key', + ), + migrations.RemoveField( + model_name='instance', + name='user_count', + ), + migrations.AddField( + model_name='instance', + name='is_test', + field=models.BooleanField(default=False), + ), + ] diff --git a/apiserver/plane/license/models/__init__.py b/apiserver/plane/license/models/__init__.py index 0f35f718d..f33a03fde 100644 --- a/apiserver/plane/license/models/__init__.py +++ b/apiserver/plane/license/models/__init__.py @@ -1 +1,6 @@ -from .instance import Instance, InstanceAdmin, InstanceConfiguration +from .instance import ( + Instance, + InstanceAdmin, + InstanceConfiguration, + EditiontTypes, +) diff --git a/apiserver/plane/license/models/instance.py b/apiserver/plane/license/models/instance.py index 0c0581c8b..9f9ea4806 100644 --- a/apiserver/plane/license/models/instance.py +++ b/apiserver/plane/license/models/instance.py @@ -11,7 +11,7 @@ from plane.db.models import BaseModel ROLE_CHOICES = ((20, "Admin"),) -class ProductTypes(Enum): +class EditiontTypes(Enum): PLANE_CE = "plane-ce" @@ -20,11 +20,10 @@ class Instance(BaseModel): instance_name = models.CharField(max_length=255) whitelist_emails = models.TextField(blank=True, null=True) instance_id = models.CharField(max_length=255, unique=True) - license_key = models.CharField(max_length=256, null=True, blank=True) current_version = models.CharField(max_length=255) latest_version = models.CharField(max_length=255, null=True, blank=True) - product = models.CharField( - max_length=255, default=ProductTypes.PLANE_CE.value + edition = models.CharField( + max_length=255, default=EditiontTypes.PLANE_CE.value ) domain = models.TextField(blank=True) # Instance specifics @@ -37,9 +36,8 @@ class Instance(BaseModel): is_setup_done = models.BooleanField(default=False) # signup screen is_signup_screen_visited = models.BooleanField(default=False) - # users - user_count = models.PositiveBigIntegerField(default=0) is_verified = models.BooleanField(default=False) + is_test = models.BooleanField(default=False) class Meta: verbose_name = "Instance"