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