#!/usr/bin/env python
"""Script to create a manager user for testing RBAC."""
import os
import sys
import django

# Add the project root to the path
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.local')

# Setup Django
django.setup()

from modules.authentication.models import User
from modules.team.models import TeamMember
from django.db import transaction

def create_manager_user():
    # Get organization from first existing member
    first_member = TeamMember.objects.first()
    if not first_member:
        print("ERROR: No organization found. Please ensure there's at least one member in the system.")
        return
    
    org_id = first_member.tenant_id
    print(f"Using organization: {org_id}")
    
    # Create manager user
    with transaction.atomic():
        user, created = User.objects.get_or_create(
            email='manager@fudo.local',
            defaults={
                'first_name': 'QA',
                'last_name': 'Manager',
                'is_active': True,
            }
        )
        if created:
            user.set_password('manager123')
            user.save()
            print(f"Created user: {user.email}")
        else:
            print(f"User already exists: {user.email}")
        
        # Create or update team member with MANAGER role
        member, created = TeamMember.objects.get_or_create(
            tenant_id=org_id,
            user=user,
            defaults={'role': 'MANAGER', 'status': 'ACTIVE'}
        )
        if created:
            print(f"Created team member with MANAGER role")
        else:
            member.role = 'MANAGER'
            member.status = 'ACTIVE'
            member.save()
            print(f"Updated member to MANAGER role")
    
    print("\nManager account created successfully!")
    print("Email: manager@fudo.local")
    print("Password: manager123")

if __name__ == '__main__':
    create_manager_user()
