From 5e30d692664f1831289ba52158a19fc38ed3a22f Mon Sep 17 00:00:00 2001 From: Nicolas Clerc Date: Fri, 7 Jan 2022 18:36:23 +0100 Subject: [PATCH] Add support for django 4.0 (#62) --- src/dockerflow/django/middleware.py | 6 ++++-- src/dockerflow/django/signals.py | 4 ++-- tests/constraints/django-4.0.txt | 1 + tests/django/test_django.py | 5 +++-- tox.ini | 6 ++++-- 5 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 tests/constraints/django-4.0.txt diff --git a/src/dockerflow/django/middleware.py b/src/dockerflow/django/middleware.py index 271737a..5b3ffe6 100644 --- a/src/dockerflow/django/middleware.py +++ b/src/dockerflow/django/middleware.py @@ -38,8 +38,10 @@ class DockerflowMiddleware(MiddlewareMixin): (re.compile(r"/__lbheartbeat__/?$"), views.lbheartbeat), ] - def __init__(self, *args, **kwargs): - super(DockerflowMiddleware, self).__init__(*args, **kwargs) + def __init__(self, get_response=None, *args, **kwargs): + super(DockerflowMiddleware, self).__init__( + get_response=get_response, *args, **kwargs + ) self.summary_logger = logging.getLogger("request.summary") def process_request(self, request): diff --git a/src/dockerflow/django/signals.py b/src/dockerflow/django/signals.py index 2510d59..ba049af 100644 --- a/src/dockerflow/django/signals.py +++ b/src/dockerflow/django/signals.py @@ -35,5 +35,5 @@ def heartbeat_failed_handler(sender, level, **kwargs): """ from django.dispatch import Signal -heartbeat_passed = Signal(providing_args=["level"]) -heartbeat_failed = Signal(providing_args=["level"]) +heartbeat_passed = Signal() +heartbeat_failed = Signal() diff --git a/tests/constraints/django-4.0.txt b/tests/constraints/django-4.0.txt new file mode 100644 index 0000000..bb4c705 --- /dev/null +++ b/tests/constraints/django-4.0.txt @@ -0,0 +1 @@ +Django>=4.0,<4.1 diff --git a/tests/django/test_django.py b/tests/django/test_django.py index 58fc196..748aed4 100644 --- a/tests/django/test_django.py +++ b/tests/django/test_django.py @@ -11,6 +11,7 @@ from django.core.exceptions import ImproperlyConfigured from django.db import connection from django.db.utils import OperationalError, ProgrammingError +from django.http import HttpResponse from django.test.utils import CaptureQueriesContext from dockerflow import health @@ -35,7 +36,7 @@ def reset_checks(): @pytest.fixture def dockerflow_middleware(): - return DockerflowMiddleware() + return DockerflowMiddleware(get_response=HttpResponse()) @pytest.mark.parametrize("request_path", ["/__version__", "/__version__/"]) @@ -155,7 +156,7 @@ def process_request(self, request): def process_response(self, request, response): return response - hostile_middleware = HostileMiddleware() + hostile_middleware = HostileMiddleware(get_response=HttpResponse()) response = dockerflow_middleware.process_request(dockerflow_request) response = hostile_middleware.process_request(dockerflow_request) response = hostile_middleware.process_response(dockerflow_request, response) diff --git a/tox.ini b/tox.ini index 2925ae2..2d86f9d 100644 --- a/tox.ini +++ b/tox.ini @@ -5,6 +5,7 @@ envlist = py38-lint py38-docs py{36,37,38,39}-dj{22,30,31} + py{38,39}-dj{40} py{36,37,38,39}-fl{011,012,10} py{36,37,38,39}-s{19,20} @@ -23,12 +24,13 @@ setenv = PYTHONPATH = {toxinidir} deps = -rtests/requirements/default.txt - dj{22,30,31}: -rtests/requirements/django.txt + dj{22,30,31,40}: -rtests/requirements/django.txt fl{011,012,10}: -rtests/requirements/flask.txt s{19,20}: -rtests/requirements/sanic.txt dj22: -ctests/constraints/django-2.2.txt dj30: -ctests/constraints/django-3.0.txt dj31: -ctests/constraints/django-3.1.txt + dj40: -ctests/constraints/django-4.0.txt fl011: -ctests/constraints/flask-0.11.txt fl012: -ctests/constraints/flask-0.12.txt fl10: -ctests/constraints/flask-1.0.txt @@ -36,7 +38,7 @@ deps = s20: -ctests/constraints/sanic-20.txt commands = python --version - dj{22,30,31}: pytest tests/core/ tests/django --nomigrations {posargs:} + dj{22,30,31,40}: pytest tests/core/ tests/django --nomigrations {posargs:} fl{011,012,10}: pytest tests/core/ tests/flask/ {posargs:} s{19,20}: pytest tests/core/ tests/sanic/ {posargs:}