from core.utils.common import temporary_disconnect_all_signals
|
from django.conf import settings
|
from django.db import transaction
|
from organizations.models import Organization, OrganizationMember
|
from projects.models import Project
|
|
|
def create_organization(title, created_by, legacy_api_tokens_enabled=False, **kwargs):
|
from core.feature_flags import flag_set
|
|
JWT_ACCESS_TOKEN_ENABLED = flag_set('fflag__feature_develop__prompts__dia_1829_jwt_token_auth')
|
|
with transaction.atomic():
|
org = Organization.objects.create(title=title, created_by=created_by, **kwargs)
|
OrganizationMember.objects.create(user=created_by, organization=org)
|
if JWT_ACCESS_TOKEN_ENABLED:
|
# set auth tokens to new system for new users, unless specified otherwise
|
org.jwt.api_tokens_enabled = True
|
org.jwt.legacy_api_tokens_enabled = (
|
legacy_api_tokens_enabled or settings.LABEL_STUDIO_ENABLE_LEGACY_API_TOKEN
|
)
|
org.jwt.save()
|
return org
|
|
|
def destroy_organization(org):
|
with temporary_disconnect_all_signals():
|
Project.objects.filter(organization=org).delete()
|
if hasattr(org, 'saml'):
|
org.saml.delete()
|
org.delete()
|