Initial commit
This commit is contained in:
49
api/services/workspace_service.py
Normal file
49
api/services/workspace_service.py
Normal file
@@ -0,0 +1,49 @@
|
||||
from extensions.ext_database import db
|
||||
from models.account import Tenant
|
||||
from models.provider import Provider, ProviderType
|
||||
|
||||
|
||||
class WorkspaceService:
|
||||
@classmethod
|
||||
def get_tenant_info(cls, tenant: Tenant):
|
||||
tenant_info = {
|
||||
'id': tenant.id,
|
||||
'name': tenant.name,
|
||||
'plan': tenant.plan,
|
||||
'status': tenant.status,
|
||||
'created_at': tenant.created_at,
|
||||
'providers': [],
|
||||
'in_trail': False,
|
||||
'trial_end_reason': 'using_custom'
|
||||
}
|
||||
|
||||
# Get providers
|
||||
providers = db.session.query(Provider).filter(
|
||||
Provider.tenant_id == tenant.id
|
||||
).all()
|
||||
|
||||
# Add providers to the tenant info
|
||||
tenant_info['providers'] = providers
|
||||
|
||||
custom_provider = None
|
||||
system_provider = None
|
||||
|
||||
for provider in providers:
|
||||
if provider.provider_type == ProviderType.CUSTOM.value:
|
||||
if provider.is_valid and provider.encrypted_config:
|
||||
custom_provider = provider
|
||||
elif provider.provider_type == ProviderType.SYSTEM.value:
|
||||
if provider.is_valid:
|
||||
system_provider = provider
|
||||
|
||||
if system_provider and not custom_provider:
|
||||
quota_used = system_provider.quota_used if system_provider.quota_used is not None else 0
|
||||
quota_limit = system_provider.quota_limit if system_provider.quota_limit is not None else 0
|
||||
|
||||
if quota_used >= quota_limit:
|
||||
tenant_info['trial_end_reason'] = 'trial_exceeded'
|
||||
else:
|
||||
tenant_info['in_trail'] = True
|
||||
tenant_info['trial_end_reason'] = None
|
||||
|
||||
return tenant_info
|
Reference in New Issue
Block a user