61 lines
1.8 KiB
Python
61 lines
1.8 KiB
Python
#!/usr/bin/env python
|
|
"""
|
|
Test script to verify the staff hierarchy API fix.
|
|
"""
|
|
import os
|
|
import django
|
|
|
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'PX360.settings')
|
|
django.setup()
|
|
|
|
from apps.organizations.models import Staff
|
|
|
|
def test_api_data():
|
|
"""Test that staff data is available"""
|
|
print("Testing Staff Hierarchy API Data...")
|
|
print("-" * 60)
|
|
|
|
# Get all staff
|
|
staff_queryset = Staff.objects.all()
|
|
total_staff = staff_queryset.count()
|
|
print(f"✓ Total staff in database: {total_staff}")
|
|
|
|
if total_staff == 0:
|
|
print("\n⚠️ No staff data found!")
|
|
return False
|
|
|
|
# Get staff with managers
|
|
staff_list = staff_queryset.select_related('report_to', 'hospital', 'department')
|
|
|
|
# Find root nodes
|
|
staff_dict = {staff.id: staff for staff in staff_list}
|
|
root_staff = [
|
|
staff for staff in staff_list
|
|
if staff.report_to_id is None or staff.report_to_id not in staff_dict
|
|
]
|
|
|
|
print(f"✓ Root nodes (top-level managers): {len(root_staff)}")
|
|
print()
|
|
|
|
# Show sample data
|
|
print("Sample Top-Level Managers:")
|
|
for i, staff in enumerate(root_staff[:3], 1):
|
|
print(f" {i}. {staff.get_full_name()} ({staff.job_title or 'No title'})")
|
|
print(f" Hospital: {staff.hospital.name if staff.hospital else 'None'}")
|
|
print(f" Department: {staff.department.name if staff.department else 'None'}")
|
|
|
|
if len(root_staff) > 3:
|
|
print(f" ... and {len(root_staff) - 3} more")
|
|
|
|
print()
|
|
print("-" * 60)
|
|
print("✓ API data test PASSED!")
|
|
print()
|
|
print("The hierarchy API should now work correctly.")
|
|
print("Visit http://localhost:8000/organizations/staff/hierarchy/ to view it.")
|
|
return True
|
|
|
|
if __name__ == '__main__':
|
|
success = test_api_data()
|
|
exit(0 if success else 1)
|