import pytz from django.utils import timezone class TimezoneMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): tzname = request.session.get('django_timezone') if request.user.is_authenticated: if hasattr(request.user, 'instructor'): tzname = request.user.instructor.timezone if hasattr(request.user, 'student'): tzname = request.user.student.timezone if tzname: timezone.activate(pytz.timezone(tzname)) else: timezone.deactivate() return self.get_response(request)