#!/usr/bin/env python3 """Debug script to understand team member update operations""" import sys from sigma_api_client import SigmaAPIClient from team_management import TeamManager from user_management import UserManager from config import ConfigManager def debug_team_update(): try: config_manager = ConfigManager() sigma_config = config_manager.get_sigma_config() api_client = SigmaAPIClient(sigma_config) team_manager = TeamManager(api_client) user_manager = UserManager(api_client) # Get Data Labs team details team = team_manager.get_team_by_name("Data Labs") if not team: print("āŒ Data Labs team not found") return team_id = team['teamId'] print(f"šŸ“‹ Team: Data Labs") print(f"šŸ†” Team ID: {team_id}") print("=" * 50) # Get current team details including members print("1. Current team state:") try: team_details = api_client.get(f'/v2/teams/{team_id}') current_members = team_details.get('members', []) print(f" Current members: {current_members}") print(f" Member count: {len(current_members)}") except Exception as e: print(f" Error getting team details: {e}") return # Get user details for the users we want to add print("\n2. User validation:") test_emails = ["mmachado@sonymusic-pde.com", "durukov@sonymusic-pde.com"] valid_users = [] for email in test_emails: user = user_manager.get_member_by_email(email) if user: user_id = user['memberId'] # Check both isActive and isInactive fields is_active = user.get('isActive', True) # Default to True if missing is_inactive = user.get('isInactive', False) # Check isInactive field actual_active = is_active and not is_inactive print(f" āœ… {email}") print(f" User ID: {user_id}") print(f" isActive: {is_active}") print(f" isInactive: {is_inactive}") print(f" Calculated Active: {actual_active}") print(f" Account Type: {user.get('accountType', 'Unknown')}") print(f" Raw user data: {user}") if actual_active: valid_users.append({ 'email': email, 'user_id': user_id, 'user': user }) else: print(f" āš ļø User is inactive - cannot be added to team") else: print(f" āŒ {email} - Not found") if not valid_users: print("\nāŒ No valid active users to add") return print(f"\n3. Preparing team update:") # Prepare new member list new_member_ids = current_members.copy() for user_info in valid_users: user_id = user_info['user_id'] if user_id not in new_member_ids: new_member_ids.append(user_id) print(f" Adding: {user_info['email']} ({user_id})") else: print(f" Already member: {user_info['email']}") print(f" Updated member list: {new_member_ids}") print(f" Total members after update: {len(new_member_ids)}") # Try the API call with different formats print(f"\n4. Testing API call:") # Format 1: Direct array of IDs update_data1 = { 'members': new_member_ids } # Format 2: Array of objects with memberId update_data2 = { 'members': [{'memberId': mid} for mid in new_member_ids] } # Try both formats for i, (data, desc) in enumerate([(update_data1, "Direct IDs"), (update_data2, "memberId objects")], 1): print(f"\n Attempt {i} - {desc}:") print(f" Request payload: {data}") try: print(f" Making PATCH request to: /v2/teams/{team_id}/members") response = api_client.patch(f'/v2/teams/{team_id}/members', data) print(f" āœ… Success! Response: {response}") # Check if it worked updated_team_details = api_client.get(f'/v2/teams/{team_id}') updated_members = updated_team_details.get('members', []) if len(updated_members) > 0: print(f" šŸŽ‰ SUCCESS! Members added: {len(updated_members)}") break else: print(f" āš ļø API succeeded but no members added") except Exception as e: print(f" āŒ API call failed: {e}") if hasattr(e, 'response') and hasattr(e.response, 'text'): print(f" Response text: {e.response.text}") print(f"\n5. Final verification:") updated_team_details = api_client.get(f'/v2/teams/{team_id}') updated_members = updated_team_details.get('members', []) print(f" Final member count: {len(updated_members)}") print(f" Final members: {updated_members}") except Exception as e: print(f"āŒ Debug error: {e}") if __name__ == "__main__": debug_team_update()