From a760f522d39af93f1601f74611f5f41247acfe44 Mon Sep 17 00:00:00 2001 From: David Barnes <barnesdavidj@gmail.com> Date: Sun, 13 Nov 2022 19:06:03 -0500 Subject: [PATCH] Fix bug where the use of RedirectView would raise a warning about no attributes defined on the view when strict mode is enabled. --- adminlte2_pdq/middleware.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/adminlte2_pdq/middleware.py b/adminlte2_pdq/middleware.py index 510cd5a..7655aa3 100644 --- a/adminlte2_pdq/middleware.py +++ b/adminlte2_pdq/middleware.py @@ -7,6 +7,7 @@ from django.http import Http404 from django.contrib import messages from django.shortcuts import redirect from django.urls import resolve +from django.views.generic.base import RedirectView from .constants import ( LOGIN_REQUIRED, @@ -117,6 +118,9 @@ class AuthMiddleware: # If view, determine if function based or class based if view: + # Get the view class + view_class = getattr(view.func, 'view_class', None) + # Determine if request url is exempt. current_url_name = view.url_name app_name = view.app_name @@ -127,10 +131,10 @@ class AuthMiddleware: or path in STRICT_POLICY_WHITELIST or app_name == 'admin' or self.verify_media_route(path) + or self.verify_redirect_route(view_class) ): exempt = True - view_class = getattr(view.func, 'view_class', None) if view_class: # Get attributes permissions = getattr(view_class, 'permission_required', []) @@ -173,3 +177,7 @@ class AuthMiddleware: if MEDIA_ROUTE and MEDIA_ROUTE != '/': return_val = path.startswith(MEDIA_ROUTE) return return_val + + def verify_redirect_route(self, view_class): + """Verify that the view class is a RedirectView""" + return view_class and view_class == RedirectView -- GitLab