Source code for model_permissions.middleware

"""
django-model-permissions - simple object permissions for django.

Copyright (C) 2018 Mathias Stelzer

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
"""
from django.conf import settings
from django.core.exceptions import PermissionDenied
from django.http import HttpResponseRedirect


[docs]class RedirectMiddleware(object): """ Middleware to redirect PermissionDenied exceptions. By default, users are redirected to the :django:setting:`LOGIN_URL`. To change this, set ``MODEL_PERMISSIONS_REDIRECT_URL`` in your settings. """ def __init__(self, get_response): """Initialize middleware.""" self.get_response = get_response def __call__(self, request): """Get and return the response for the given request.""" return self.get_response(request)
[docs] def process_exception(self, request, exception): """Redirect a `PermissionDenied` exception.""" if type(exception) == PermissionDenied: url = getattr(settings, 'MODEL_PERMISSIONS_REDIRECT_URL', settings.LOGIN_URL) return HttpResponseRedirect('{}?next={}'.format(url, request.path))