From 0ab8aa3e8f42cebb266ee1d7d256563964d872e0 Mon Sep 17 00:00:00 2001 From: Peter Marheine Date: Thu, 23 Dec 2021 11:22:52 +1100 Subject: [PATCH] Stop using django.util.deprecation.MiddlewareMixin That class is intended primarily for compatibility with Pre-1.10 middleware, and recently gained a check that get_response is not None. This package ensures an unexpecified `get_response` function is never called on its own, so it's simplest to manually implement the middleware API. --- django_downloadview/middlewares.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/django_downloadview/middlewares.py b/django_downloadview/middlewares.py index 51888b2..ff9df36 100644 --- a/django_downloadview/middlewares.py +++ b/django_downloadview/middlewares.py @@ -14,14 +14,6 @@ from django.core.exceptions import ImproperlyConfigured from django_downloadview.response import DownloadResponse from django_downloadview.utils import import_member -try: - from django.utils.deprecation import MiddlewareMixin -except ImportError: - - class MiddlewareMixin(object): - def __init__(self, get_response=None): - super(MiddlewareMixin, self).__init__() - #: Sentinel value to detect whether configuration is to be loaded from Django #: settings or not. @@ -38,12 +30,18 @@ def is_download_response(response): return isinstance(response, DownloadResponse) -class BaseDownloadMiddleware(MiddlewareMixin): +class BaseDownloadMiddleware: """Base (abstract) Django middleware that handles download responses. Subclasses **must** implement :py:meth:`process_download_response` method. """ + def __init__(self, get_response): + self.get_response = get_response + + def __call__(self, request): + response = self.get_response(request) + return self.process_response(request, response) def is_download_response(self, response): """Return True if ``response`` can be considered as a file download.