import zoneinfo
from django.utils import timezone
from .models import UserProfile

class SchoolTimezoneMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        # Default behavior: Deactivate
        timezone.deactivate()
        
        if hasattr(request, 'user') and request.user.is_authenticated:
            try:
                profile = getattr(request.user, 'profile', None)
                if profile and profile.school and profile.school.timezone_name:
                    timezone.activate(zoneinfo.ZoneInfo(profile.school.timezone_name))
            except Exception:
                pass
        
        return self.get_response(request)
