dify/api/services/workspace_service.py

53 lines
1.8 KiB
Python
Raw Normal View History

2023-08-15 13:35:47 +08:00
from flask_login import current_user
from configs import dify_config
from extensions.ext_database import db
2023-12-18 16:25:37 +08:00
from models.account import Tenant, TenantAccountJoin, TenantAccountJoinRole
from services.account_service import TenantService
from services.feature_service import FeatureService
2023-12-18 16:25:37 +08:00
2023-05-15 08:51:32 +08:00
class WorkspaceService:
@classmethod
def get_tenant_info(cls, tenant: Tenant):
2023-08-15 13:35:47 +08:00
if not tenant:
return None
2023-05-15 08:51:32 +08:00
tenant_info = {
"id": tenant.id,
"name": tenant.name,
"plan": tenant.plan,
"status": tenant.status,
"created_at": tenant.created_at,
"in_trail": True,
"trial_end_reason": None,
"role": "normal",
2023-05-15 08:51:32 +08:00
}
2023-08-15 13:35:47 +08:00
# Get role of user
tenant_account_join = (
db.session.query(TenantAccountJoin)
.filter(TenantAccountJoin.tenant_id == tenant.id, TenantAccountJoin.account_id == current_user.id)
.first()
)
tenant_info["role"] = tenant_account_join.role
can_replace_logo = FeatureService.get_features(tenant_info["id"]).can_replace_logo
if can_replace_logo and TenantService.has_roles(
tenant, [TenantAccountJoinRole.OWNER, TenantAccountJoinRole.ADMIN]
):
base_url = dify_config.FILES_URL
replace_webapp_logo = (
f"{base_url}/files/workspaces/{tenant.id}/webapp-logo"
if tenant.custom_config_dict.get("replace_webapp_logo")
else None
)
remove_webapp_brand = tenant.custom_config_dict.get("remove_webapp_brand", False)
tenant_info["custom_config"] = {
"remove_webapp_brand": remove_webapp_brand,
"replace_webapp_logo": replace_webapp_logo,
}
2023-12-18 16:25:37 +08:00
2023-05-15 08:51:32 +08:00
return tenant_info