chore: instances

This commit is contained in:
pablohashescobar 2024-11-19 19:47:13 +05:30
parent d5a55de17a
commit f3ac26e5c9
6 changed files with 58 additions and 16 deletions

View file

@ -13,7 +13,6 @@ class InstanceSerializer(BaseSerializer):
model = Instance model = Instance
exclude = [ exclude = [
"license_key", "license_key",
"user_count"
] ]
read_only_fields = [ read_only_fields = [
"id", "id",

View file

@ -52,6 +52,17 @@ def instance_traces():
span.set_attribute( span.set_attribute(
"is_telemetry_enabled", instance.is_telemetry_enabled "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("user_count", user_count)
span.set_attribute("workspace_count", workspace_count) span.set_attribute("workspace_count", workspace_count)
span.set_attribute("project_count", project_count) span.set_attribute("project_count", project_count)

View file

@ -1,6 +1,7 @@
# Python imports # Python imports
import json import json
import secrets import secrets
import os
# Django imports # Django imports
from django.core.management.base import BaseCommand, CommandError from django.core.management.base import BaseCommand, CommandError
@ -8,10 +9,7 @@ from django.utils import timezone
from django.conf import settings from django.conf import settings
# Module imports # Module imports
from plane.license.models import Instance from plane.license.models import Instance, EditiontTypes
from plane.db.models import (
User,
)
from plane.license.bgtasks.tracer import instance_traces from plane.license.bgtasks.tracer import instance_traces
@ -32,7 +30,6 @@ class Command(BaseCommand):
payload = { payload = {
"instance_key": settings.INSTANCE_KEY, "instance_key": settings.INSTANCE_KEY,
"version": data.get("version", 0.1), "version": data.get("version", 0.1),
"user_count": User.objects.filter(is_bot=False).count(),
} }
return payload return payload
@ -54,11 +51,11 @@ class Command(BaseCommand):
instance = Instance.objects.create( instance = Instance.objects.create(
instance_name="Plane Community Edition", instance_name="Plane Community Edition",
instance_id=secrets.token_hex(12), instance_id=secrets.token_hex(12),
license_key=None,
current_version=payload.get("version"), current_version=payload.get("version"),
latest_version=payload.get("version"), latest_version=payload.get("version"),
last_checked_at=timezone.now(), 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")) self.stdout.write(self.style.SUCCESS("Instance registered"))
@ -69,9 +66,10 @@ class Command(BaseCommand):
payload = self.read_package_json() payload = self.read_package_json()
# Update the instance details # Update the instance details
instance.last_checked_at = timezone.now() instance.last_checked_at = timezone.now()
instance.user_count = payload.get("user_count", 0)
instance.current_version = payload.get("version") instance.current_version = payload.get("version")
instance.latest_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() instance.save()
# Call the instance traces task # Call the instance traces task

View file

@ -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),
),
]

View file

@ -1 +1,6 @@
from .instance import Instance, InstanceAdmin, InstanceConfiguration from .instance import (
Instance,
InstanceAdmin,
InstanceConfiguration,
EditiontTypes,
)

View file

@ -11,7 +11,7 @@ from plane.db.models import BaseModel
ROLE_CHOICES = ((20, "Admin"),) ROLE_CHOICES = ((20, "Admin"),)
class ProductTypes(Enum): class EditiontTypes(Enum):
PLANE_CE = "plane-ce" PLANE_CE = "plane-ce"
@ -20,11 +20,10 @@ class Instance(BaseModel):
instance_name = models.CharField(max_length=255) instance_name = models.CharField(max_length=255)
whitelist_emails = models.TextField(blank=True, null=True) whitelist_emails = models.TextField(blank=True, null=True)
instance_id = models.CharField(max_length=255, unique=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) current_version = models.CharField(max_length=255)
latest_version = models.CharField(max_length=255, null=True, blank=True) latest_version = models.CharField(max_length=255, null=True, blank=True)
product = models.CharField( edition = models.CharField(
max_length=255, default=ProductTypes.PLANE_CE.value max_length=255, default=EditiontTypes.PLANE_CE.value
) )
domain = models.TextField(blank=True) domain = models.TextField(blank=True)
# Instance specifics # Instance specifics
@ -37,9 +36,8 @@ class Instance(BaseModel):
is_setup_done = models.BooleanField(default=False) is_setup_done = models.BooleanField(default=False)
# signup screen # signup screen
is_signup_screen_visited = models.BooleanField(default=False) is_signup_screen_visited = models.BooleanField(default=False)
# users
user_count = models.PositiveBigIntegerField(default=0)
is_verified = models.BooleanField(default=False) is_verified = models.BooleanField(default=False)
is_test = models.BooleanField(default=False)
class Meta: class Meta:
verbose_name = "Instance" verbose_name = "Instance"