* dev: remove default user * dev: initiate licensing * dev: remove migration file 0046 * feat: self hosted licensing initialize * dev: instance licenses * dev: change license response structure * dev: add default properties and issue mention migration * dev: reset migrations * dev: instance configuration * dev: instance configuration migration * dev: update instance configuration model to take null and empty values * dev: instance configuration variables * dev: set default values * dev: update instance configuration load * dev: email configuration settings moved to database * dev: instance configuration on instance bootup * dev: auto instance registration script * dev: instance admin * dev: enable instance configuration and instance admin roles * dev: instance owner fix * dev: instance configuration values * dev: fix instance permissions and serializer * dev: fix email senders * dev: remove deprecated variables * dev: fix current site domain registration * dev: update cors setup and local settings * dev: migrate instance registration and configuration to manage commands * dev: check email validity * dev: update script to use manage command * dev: default bucket creation script * dev: instance admin routes and initial set of screens * dev: admin api to check if the current user is admin * dev: instance admin unique constraints * dev: check magic link login * dev: fix email sending for ssl * dev: create instance activation route if the instance is not activated during startup * dev: removed DJANGO_SETTINGS_MODULE from environment files and deleted auto bucket create script * dev: environment configuration for backend * dev: fix access token variable error * feat: Instance Admin Panel: General Settings (#2792) --------- Co-authored-by: pablohashescobar <nikhilschacko@gmail.com> Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com>
73 lines
2.3 KiB
Python
73 lines
2.3 KiB
Python
# Django imports
|
|
from django.db import models
|
|
from django.conf import settings
|
|
|
|
# Module imports
|
|
from plane.db.models import BaseModel
|
|
from plane.db.mixins import AuditModel
|
|
|
|
ROLE_CHOICES = (
|
|
(20, "Owner"),
|
|
(15, "Admin"),
|
|
)
|
|
|
|
|
|
class Instance(BaseModel):
|
|
# General informations
|
|
instance_name = models.CharField(max_length=255)
|
|
whitelist_emails = models.TextField(blank=True, null=True)
|
|
instance_id = models.CharField(max_length=25, unique=True)
|
|
license_key = models.CharField(max_length=256, null=True, blank=True)
|
|
api_key = models.CharField(max_length=16)
|
|
version = models.CharField(max_length=10)
|
|
# User information
|
|
primary_email = models.CharField(max_length=256)
|
|
primary_owner = models.ForeignKey(
|
|
settings.AUTH_USER_MODEL,
|
|
on_delete=models.SET_NULL,
|
|
null=True,
|
|
related_name="instance_primary_owner",
|
|
)
|
|
# Instnace specifics
|
|
last_checked_at = models.DateTimeField()
|
|
namespace = models.CharField(max_length=50, blank=True, null=True)
|
|
# telemetry and support
|
|
is_telemetry_enabled = models.BooleanField(default=True)
|
|
is_support_required = models.BooleanField(default=True)
|
|
|
|
class Meta:
|
|
verbose_name = "Instance"
|
|
verbose_name_plural = "Instances"
|
|
db_table = "instances"
|
|
ordering = ("-created_at",)
|
|
|
|
|
|
class InstanceAdmin(BaseModel):
|
|
user = models.ForeignKey(
|
|
settings.AUTH_USER_MODEL,
|
|
on_delete=models.SET_NULL,
|
|
null=True,
|
|
related_name="instance_owner",
|
|
)
|
|
instance = models.ForeignKey(Instance, on_delete=models.CASCADE, related_name="admins")
|
|
role = models.PositiveIntegerField(choices=ROLE_CHOICES, default=15)
|
|
|
|
class Meta:
|
|
unique_together = ["instance", "user"]
|
|
verbose_name = "Instance Admin"
|
|
verbose_name_plural = "Instance Admins"
|
|
db_table = "instance_admins"
|
|
ordering = ("-created_at",)
|
|
|
|
|
|
class InstanceConfiguration(BaseModel):
|
|
# The instance configuration variables
|
|
key = models.CharField(max_length=100, unique=True)
|
|
value = models.TextField(null=True, blank=True, default=None)
|
|
|
|
class Meta:
|
|
verbose_name = "Instance Configuration"
|
|
verbose_name_plural = "Instance Configurations"
|
|
db_table = "instance_configurations"
|
|
ordering = ("-created_at",)
|
|
|