Co-authored-by: 刘江波 <jiangbo721@163.com>tags/1.1.0
| @@ -5,7 +5,6 @@ from .account import ( | |||
| InvitationCode, | |||
| Tenant, | |||
| TenantAccountJoin, | |||
| TenantAccountJoinRole, | |||
| TenantAccountRole, | |||
| TenantStatus, | |||
| ) | |||
| @@ -156,7 +155,6 @@ __all__ = [ | |||
| "TagBinding", | |||
| "Tenant", | |||
| "TenantAccountJoin", | |||
| "TenantAccountJoinRole", | |||
| "TenantAccountRole", | |||
| "TenantDefaultModel", | |||
| "TenantPreferredModelProvider", | |||
| @@ -220,13 +220,6 @@ class Tenant(db.Model): # type: ignore[name-defined] | |||
| self.custom_config = json.dumps(value) | |||
| class TenantAccountJoinRole(enum.Enum): | |||
| OWNER = "owner" | |||
| ADMIN = "admin" | |||
| NORMAL = "normal" | |||
| DATASET_OPERATOR = "dataset_operator" | |||
| class TenantAccountJoin(db.Model): # type: ignore[name-defined] | |||
| __tablename__ = "tenant_account_joins" | |||
| __table_args__ = ( | |||
| @@ -28,7 +28,6 @@ from models.account import ( | |||
| AccountStatus, | |||
| Tenant, | |||
| TenantAccountJoin, | |||
| TenantAccountJoinRole, | |||
| TenantAccountRole, | |||
| TenantStatus, | |||
| ) | |||
| @@ -625,8 +624,8 @@ class TenantService: | |||
| @staticmethod | |||
| def create_tenant_member(tenant: Tenant, account: Account, role: str = "normal") -> TenantAccountJoin: | |||
| """Create tenant member""" | |||
| if role == TenantAccountJoinRole.OWNER.value: | |||
| if TenantService.has_roles(tenant, [TenantAccountJoinRole.OWNER]): | |||
| if role == TenantAccountRole.OWNER.value: | |||
| if TenantService.has_roles(tenant, [TenantAccountRole.OWNER]): | |||
| logging.error(f"Tenant {tenant.id} has already an owner.") | |||
| raise Exception("Tenant already has an owner.") | |||
| @@ -734,10 +733,10 @@ class TenantService: | |||
| return updated_accounts | |||
| @staticmethod | |||
| def has_roles(tenant: Tenant, roles: list[TenantAccountJoinRole]) -> bool: | |||
| def has_roles(tenant: Tenant, roles: list[TenantAccountRole]) -> bool: | |||
| """Check if user has any of the given roles for a tenant""" | |||
| if not all(isinstance(role, TenantAccountJoinRole) for role in roles): | |||
| raise ValueError("all roles must be TenantAccountJoinRole") | |||
| if not all(isinstance(role, TenantAccountRole) for role in roles): | |||
| raise ValueError("all roles must be TenantAccountRole") | |||
| return ( | |||
| db.session.query(TenantAccountJoin) | |||
| @@ -749,7 +748,7 @@ class TenantService: | |||
| ) | |||
| @staticmethod | |||
| def get_user_role(account: Account, tenant: Tenant) -> Optional[TenantAccountJoinRole]: | |||
| def get_user_role(account: Account, tenant: Tenant) -> Optional[TenantAccountRole]: | |||
| """Get the role of the current account for a given tenant""" | |||
| join = ( | |||
| db.session.query(TenantAccountJoin) | |||
| @@ -2,7 +2,7 @@ from flask_login import current_user # type: ignore | |||
| from configs import dify_config | |||
| from extensions.ext_database import db | |||
| from models.account import Tenant, TenantAccountJoin, TenantAccountJoinRole | |||
| from models.account import Tenant, TenantAccountJoin, TenantAccountRole | |||
| from services.account_service import TenantService | |||
| from services.feature_service import FeatureService | |||
| @@ -33,9 +33,7 @@ class WorkspaceService: | |||
| 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] | |||
| ): | |||
| if can_replace_logo and TenantService.has_roles(tenant, [TenantAccountRole.OWNER, TenantAccountRole.ADMIN]): | |||
| base_url = dify_config.FILES_URL | |||
| replace_webapp_logo = ( | |||
| f"{base_url}/files/workspaces/{tenant.id}/webapp-logo" | |||