""" Context processors for accounts app """ from django.contrib.auth import get_user_model User = get_user_model() def acknowledgement_counts(request): """ Context processor to add acknowledgement-related counts to all templates """ context = {} # Only process for authenticated users if request.user.is_authenticated: # Count pending acknowledgements for the current user from .models import UserAcknowledgement, AcknowledgementChecklistItem # Get checklist items for the user's role checklist_items = AcknowledgementChecklistItem.objects.filter(is_active=True) # Filter by user's role if applicable user_role = None if request.user.groups.filter(name='PX Admin').exists(): user_role = 'px_admin' elif request.user.groups.filter(name='Hospital Admin').exists(): user_role = 'hospital_admin' elif request.user.groups.filter(name='Department Manager').exists(): user_role = 'department_manager' elif request.user.groups.filter(name='Staff').exists(): user_role = 'staff' elif request.user.groups.filter(name='Physician').exists(): user_role = 'physician' if user_role: checklist_items = checklist_items.filter(role__in=[user_role, 'all']) else: checklist_items = checklist_items.filter(role='all') # Count pending acknowledgements (not yet signed) acknowledged_ids = UserAcknowledgement.objects.filter( user=request.user, is_acknowledged=True ).values_list('checklist_item_id', flat=True) pending_count = checklist_items.exclude(id__in=acknowledged_ids).count() context['pending_acknowledgements_count'] = pending_count # For PX Admins, count provisional users if request.user.is_px_admin(): provisional_count = User.objects.filter(is_provisional=True).count() context['provisional_user_count'] = provisional_count return context