#!/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}")