# -*- coding: utf-8 -*- from django.utils.functional import SimpleLazyObject from django.contrib.auth.views import logout as django_logout from django.contrib import messages from .models import get_profile def _get_profile(request): if not hasattr(request, '_cached_profile'): request._cached_profile = get_profile(request.user) return request._cached_profile class ProfileMiddleware(object): def process_request(self, request): assert hasattr(request, 'user'), "The Profile middleware requires authentication middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.auth.middleware.AuthenticationMiddleware'." request.profile = SimpleLazyObject(lambda: _get_profile(request)) try: if request.user.is_authenticated() and request.session and request.user: if request.user.profile.user_session_key != request.session.session_key and \ request.profile.user_session_key != '': django_logout(request) messages.add_message(request, messages.ERROR, u'Другой пользователь вошёл под этим логином.') except: # print 'no user profile' pass