Procházet zdrojové kódy

fix: switch tenant (#2363)

crazywoola před 1 rokem
rodič
revize
3f0c515355
1 změnil soubory, kde provedl 9 přidání a 10 odebrání
  1. 9 10
      api/services/account_service.py

+ 9 - 10
api/services/account_service.py

@@ -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]: