HH/check_user_permissions.py

70 lines
2.1 KiB
Python

#!/usr/bin/env python
"""
Check user permissions and hospital assignments
"""
import os
import django
# Setup Django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.dev')
django.setup()
from apps.accounts.models import User
from apps.organizations.models import Hospital
print("="*70)
print("USER PERMISSIONS CHECK")
print("="*70)
# List all users
users = User.objects.all()
print(f"\nTotal users: {users.count()}")
for user in users:
print(f"\n{'='*70}")
print(f"User: {user.username} (ID: {user.id})")
print(f"Email: {user.email}")
print(f"Is Active: {user.is_active}")
print(f"Is Superuser: {user.is_superuser}")
print(f"Is Staff: {user.is_staff}")
print(f"Hospital: {user.hospital}")
# Check role
print(f"Is PX Admin: {user.is_px_admin()}")
print(f"Is Hospital Admin: {user.is_hospital_admin()}")
# Check what surveys they can see
from apps.surveys.models import SurveyInstance
# Apply same RBAC logic as the view
if user.is_px_admin():
queryset = SurveyInstance.objects.all()
print("Can see: All surveys (PX Admin)")
elif user.is_hospital_admin() and user.hospital:
queryset = SurveyInstance.objects.filter(survey_template__hospital=user.hospital)
print(f"Can see: Surveys for hospital {user.hospital.name}")
elif user.hospital:
queryset = SurveyInstance.objects.filter(survey_template__hospital=user.hospital)
print(f"Can see: Surveys for hospital {user.hospital.name}")
else:
queryset = SurveyInstance.objects.none()
print("Can see: NO SURVEYS (no permissions/hospital)")
visible_count = queryset.count()
print(f"Visible surveys count: {visible_count}")
print("\n" + "="*70)
print("HOSPITALS")
print("="*70)
hospitals = Hospital.objects.all()
for hospital in hospitals:
print(f"\n{hospital.name} (Code: {hospital.code})")
print(f" Status: {hospital.status}")
# Count surveys per hospital
survey_count = SurveyInstance.objects.filter(
survey_template__hospital=hospital
).count()
print(f" Total surveys: {survey_count}")