""" Middleware that checks user standing for the purpose of keeping users with disabled accounts from accessing the site. """ from django.http import HttpResponseForbidden from django.utils.translation import ugettext as _ from django.conf import settings from student.models import UserStanding class UserStandingMiddleware(object): """ Checks a user's standing on request. Returns a 403 if the user's status is 'disabled'. """ def process_request(self, request): user = request.user try: user_account = UserStanding.objects.get(user=user.id) # because user is a unique field in UserStanding, there will either be # one or zero user_accounts associated with a UserStanding except UserStanding.DoesNotExist: pass else: if user_account.account_status == UserStanding.ACCOUNT_DISABLED: msg = _( 'Your account has been disabled. If you believe ' 'this was done in error, please contact us at ' '{support_email}' ).format( support_email=u'<a href="mailto:{address}?subject={subject_line}">{address}</a>'.format( address=settings.DEFAULT_FEEDBACK_EMAIL, subject_line=_('Disabled Account'), ), ) return HttpResponseForbidden(msg)