Skip to content

Commit 015d0f3

Browse files
committed
Patch for Django 4.1 support.
Fixes: AttributeError: 'UserAgentMiddleware' object has no attribute '_is_coroutine'
1 parent cda396c commit 015d0f3

File tree

4 files changed

+18
-11
lines changed

4 files changed

+18
-11
lines changed

django_seo_js/backends/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
from .base import SelectedBackend, SEOBackendBase
1+
from .base import SelectedBackend, SelectedBackendMixin, SEOBackendBase
22
from .prerender import PrerenderHosted, PrerenderIO
33
from .test import TestBackend, TestServiceDownBackend

django_seo_js/backends/base.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,18 @@
1616
))
1717

1818

19-
class SelectedBackend(MiddlewareMixin):
20-
21-
def __init__(self, get_response=None, *args, **kwargs):
22-
self.get_response = get_response
19+
class SelectedBackendMixin:
20+
def __init__(self, *args, **kwargs):
21+
super().__init__(*args, **kwargs)
2322
module_path = settings.BACKEND
2423
backend_module = importlib.import_module(".".join(module_path.split(".")[:-1]))
2524
self.backend = getattr(backend_module, module_path.split(".")[-1])()
2625

2726

27+
class SelectedBackend(MiddlewareMixin, SelectedBackendMixin):
28+
pass
29+
30+
2831
class SEOBackendBase:
2932
"""The base class to inherit for SEO_JS backends"""
3033

django_seo_js/helpers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
from django_seo_js import settings
2-
from django_seo_js.backends import SelectedBackend
2+
from django_seo_js.backends import SelectedBackendMixin
33

44

55
def update_cache_for_url(url):
66
if settings.ENABLED:
7-
selector = SelectedBackend()
7+
selector = SelectedBackendMixin()
88
return selector.backend.update_url(url)
99
return False
1010

django_seo_js/tests/backends/test_base.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from django.test import TestCase
22

3-
from django_seo_js.tests.utils import override_settings
4-
from django_seo_js.backends import PrerenderIO, SelectedBackend, SEOBackendBase, TestBackend
3+
from django_seo_js.tests.utils import override_settings, get_response_empty
4+
from django_seo_js.backends import PrerenderIO, SelectedBackend, SelectedBackendMixin, SEOBackendBase, TestBackend
55

66

77
class SEOBackendBaseTest(TestCase):
@@ -18,10 +18,14 @@ def test_update_url(self):
1818
class SelectedBackendTest(TestCase):
1919

2020
def test_default_backend(self):
21-
s = SelectedBackend()
21+
s_mixin = SelectedBackendMixin()
22+
s = SelectedBackend(get_response_empty)
23+
self.assertTrue(isinstance(s_mixin.backend, PrerenderIO))
2224
self.assertTrue(isinstance(s.backend, PrerenderIO))
2325

2426
@override_settings(BACKEND='django_seo_js.backends.TestBackend')
2527
def test_override_backend(self):
26-
s = SelectedBackend()
28+
s_mixin = SelectedBackendMixin()
29+
s = SelectedBackend(get_response_empty)
30+
self.assertTrue(isinstance(s_mixin.backend, TestBackend))
2731
self.assertTrue(isinstance(s.backend, TestBackend))

0 commit comments

Comments
 (0)