| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | from extensions.ext_database import dbfrom models.account import Tenantfrom models.provider import Provider, ProviderType, ProviderNameclass 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.provider_name == ProviderName.OPENAI.value and 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
 |