| @@ -258,20 +258,19 @@ class TenantService: | |||
| def switch_tenant(account: Account, tenant_id: int = None) -> None: | |||
| """Switch the current workspace for the account""" | |||
| # Ensure tenant_id is provided | |||
| if tenant_id is None: | |||
| raise ValueError("Tenant ID must be provided.") | |||
| tenant_account_join = TenantAccountJoin.query.filter_by(account_id=account.id, tenant_id=tenant_id).first() | |||
| if not tenant_account_join: | |||
| raise AccountNotLinkTenantError("Tenant not found or account is not a member of the tenant.") | |||
| else: | |||
| with db.session.begin(): | |||
| try: | |||
| TenantAccountJoin.query.filter_by(account_id=account.id).update({'current': False}) | |||
| tenant_account_join.current = True | |||
| db.session.commit() | |||
| # Set the current tenant for the account | |||
| account.current_tenant_id = tenant_account_join.tenant_id | |||
| except exc.SQLAlchemyError: | |||
| db.session.rollback() | |||
| raise | |||
| TenantAccountJoin.query.filter(TenantAccountJoin.account_id == account.id, TenantAccountJoin.tenant_id != tenant_id).update({'current': False}) | |||
| tenant_account_join.current = True | |||
| db.session.commit() | |||
| # Set the current tenant for the account | |||
| account.current_tenant_id = tenant_account_join.tenant_id | |||
| @staticmethod | |||
| def get_tenant_members(tenant: Tenant) -> List[Account]: | |||