From 38c5d0ab6d86e7bcf56099e39274808129b2d0df Mon Sep 17 00:00:00 2001 From: Eric Zarowny Date: Tue, 18 Jan 2022 15:31:30 -0500 Subject: [PATCH 1/3] Add Django 4.0 compatibility --- rollbar/contrib/django/middleware.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/rollbar/contrib/django/middleware.py b/rollbar/contrib/django/middleware.py index 79c87eed..5f413447 100644 --- a/rollbar/contrib/django/middleware.py +++ b/rollbar/contrib/django/middleware.py @@ -134,7 +134,7 @@ def _patch_debugview(rollbar_web_base): if new_data in debug.TECHNICAL_500_TEMPLATE: return debug.TECHNICAL_500_TEMPLATE = debug.TECHNICAL_500_TEMPLATE.replace(insert_before, replacement, 1) - else: + elif hasattr(debug, 'CURRENT_DIR'): # patch ExceptionReporter.get_traceback_html if this version of Django is using # the file system templates rather than the ones in code # This code comes from: @@ -152,6 +152,14 @@ def new_get_traceback_html(exception_reporter): c = Context(exception_reporter.get_traceback_data(), use_l10n=False) return t.render(c) debug.ExceptionReporter.get_traceback_html = new_get_traceback_html + else: + # patch ExceptionReporter.get_traceback_html for Django versions 4.0+ + def new_get_traceback_html(self): + """Return HTML version of debug 500 HTTP error page.""" + with self.html_template_path.open(encoding='utf-8') as fh: + t = debug.DEBUG_ENGINE.from_string(fh.read()) + c = Context(self.get_traceback_data(), use_l10n=False) + return t.render(c) if hasattr(debug.ExceptionReporter, '__rollbar__patched'): return From d5339e720471c05da19be402abc12fd6e6ea6fa6 Mon Sep 17 00:00:00 2001 From: Eric Zarowny Date: Wed, 19 Jan 2022 12:35:25 -0500 Subject: [PATCH 2/3] Adjust test matrix --- .github/workflows/ci.yml | 60 ++++++++++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 21 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e3d1d80a..f0343c1e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,10 +26,14 @@ jobs: - TWISTED_VERSION=16.5.0 treq==16.12.0 zope.interface==4.5.0 - TWISTED_VERSION=16.6.0 treq==16.12.0 zope.interface==4.5.0 - TWISTED_VERSION=17.1.0 treq==16.12.0 zope.interface==4.5.0 - - DJANGO_VERSION=1.11.20 + - DJANGO_VERSION=1.11.29 - DJANGO_VERSION=2.0.13 - - DJANGO_VERSION=2.1.7 - DJANGO_VERSION=2.1.15 + - DJANGO_VERSION=2.2.26 + - DJANGO_VERSION=3.0.14 + - DJANGO_VERSION=3.1.14 + - DJANGO_VERSION=3.2.11 + - DJANGO_VERSION=4.0.1 - PYRAMID_VERSION=1.9.2 - PYRAMID_VERSION=1.10.4 - STARLETTE_VERSION=0.12.12 httpx==0.18.1 python-multipart==0.0.5 @@ -42,18 +46,46 @@ jobs: - python-version: 2.7 framework: DJANGO_VERSION=2.0.13 - python-version: 2.7 - framework: DJANGO_VERSION=2.1.7 + framework: DJANGO_VERSION=2.1.15 + - python-version: 2.7 + framework: DJANGO_VERSION=2.2.26 + - python-version: 2.7 + framework: DJANGO_VERSION=3.0.14 + - python-version: 2.7 + framework: DJANGO_VERSION=3.1.14 - python-version: 2.7 + framework: DJANGO_VERSION=3.2.11 + - python-version: 2.7 + framework: DJANGO_VERSION=4.0.1 + - python-version: 3.4 framework: DJANGO_VERSION=2.1.15 - python-version: 3.4 - framework: DJANGO_VERSION=2.1.7 + framework: DJANGO_VERSION=2.2.26 - python-version: 3.4 - framework: DJANGO_VERSION=2.1.15 + framework: DJANGO_VERSION=3.0.14 + - python-version: 3.4 + framework: DJANGO_VERSION=3.1.14 + - python-version: 3.4 + framework: DJANGO_VERSION=3.2.11 + - python-version: 3.4 + framework: DJANGO_VERSION=4.0.1 - python-version: 3.5 - framework: DJANGO_VERSION=2.1.15 + framework: DJANGO_VERSION=3.0.14 + - python-version: 3.5 + framework: DJANGO_VERSION=3.1.14 + - python-version: 3.5 + framework: DJANGO_VERSION=3.2.11 + - python-version: 3.5 + framework: DJANGO_VERSION=4.0.1 - python-version: 3.6 - framework: DJANGO_VERSION=2.1.15 + framework: DJANGO_VERSION=4.0.1 - python-version: 3.7 + framework: DJANGO_VERSION=4.0.1 + - python-version: 3.8 + framework: DJANGO_VERSION=1.11.29 + - python-version: 3.8 + framework: DJANGO_VERSION=2.0.13 + - python-version: 3.8 framework: DJANGO_VERSION=2.1.15 # twisted/treq setup.py allows: @@ -134,20 +166,6 @@ jobs: include: - python-version: 2.7 framework: FLASK_VERSION=0.9 - - python-version: 3.4 - framework: DJANGO_VERSION=1.7.11 - - python-version: 3.4 - framework: DJANGO_VERSION=1.8.19 - - python-version: 3.4 - framework: DJANGO_VERSION=1.9.13 - - python-version: 3.4 - framework: DJANGO_VERSION=1.10.8 - - python-version: 3.5 - framework: DJANGO_VERSION=1.8.19 - - python-version: 3.5 - framework: DJANGO_VERSION=1.9.13 - - python-version: 3.5 - framework: DJANGO_VERSION=1.10.8 - python-version: 3.7 framework: TWISTED_VERSION=18.9.0 treq==20.4.1 zope.interface==4.5.0 - python-version: 3.7 From 71e53011526204925767169c0755fe90b82c119f Mon Sep 17 00:00:00 2001 From: Eric Zarowny Date: Wed, 19 Jan 2022 16:50:26 -0500 Subject: [PATCH 3/3] Restore matrix includes --- .github/workflows/ci.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f0343c1e..d041338c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -166,6 +166,20 @@ jobs: include: - python-version: 2.7 framework: FLASK_VERSION=0.9 + - python-version: 3.4 + framework: DJANGO_VERSION=1.7.11 + - python-version: 3.4 + framework: DJANGO_VERSION=1.8.19 + - python-version: 3.4 + framework: DJANGO_VERSION=1.9.13 + - python-version: 3.4 + framework: DJANGO_VERSION=1.10.8 + - python-version: 3.5 + framework: DJANGO_VERSION=1.8.19 + - python-version: 3.5 + framework: DJANGO_VERSION=1.9.13 + - python-version: 3.5 + framework: DJANGO_VERSION=1.10.8 - python-version: 3.7 framework: TWISTED_VERSION=18.9.0 treq==20.4.1 zope.interface==4.5.0 - python-version: 3.7