diff --git a/CHANGELOG.md b/CHANGELOG.md index e871249e..91faffde 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,10 @@ any parts of the framework not mentioned in the documentation should generally b * Fixed invalid relationship pointer in error objects when field naming formatting is used. * Properly resolved related resource type when nested source field is defined. +### Added + +* Added support for Django 4.1. + ### Removed * Removed support for Django 2.2. diff --git a/README.rst b/README.rst index d7309745..c82ebb2d 100644 --- a/README.rst +++ b/README.rst @@ -89,7 +89,7 @@ Requirements ------------ 1. Python (3.7, 3.8, 3.9, 3.10) -2. Django (3.2, 4.0) +2. Django (3.2, 4.0, 4.1) 3. Django REST framework (3.12, 3.13) We **highly** recommend and only officially support the latest patch release of each Python, Django and REST framework series. diff --git a/docs/getting-started.md b/docs/getting-started.md index 1a9b5cc2..e03b415b 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -52,7 +52,7 @@ like the following: ## Requirements 1. Python (3.7, 3.8, 3.9, 3.10) -2. Django (3.2, 4.0) +2. Django (3.2, 4.0, 4.1) 3. Django REST framework (3.12, 3.13) We **highly** recommend and only officially support the latest patch release of each Python, Django and REST framework series. diff --git a/example/tests/unit/test_default_drf_serializers.py b/example/tests/unit/test_default_drf_serializers.py index 31449856..d74edac7 100644 --- a/example/tests/unit/test_default_drf_serializers.py +++ b/example/tests/unit/test_default_drf_serializers.py @@ -44,26 +44,26 @@ class DummyTestViewSet(viewsets.ModelViewSet): serializer_class = DummyTestSerializer -def render_dummy_test_serialized_view(view_class): - serializer = DummyTestSerializer(instance=Entry()) +def render_dummy_test_serialized_view(view_class, entry): + serializer = DummyTestSerializer(instance=entry) renderer = JSONRenderer() return renderer.render(serializer.data, renderer_context={"view": view_class()}) # tests -def test_simple_reverse_relation_included_renderer(): +def test_simple_reverse_relation_included_renderer(db, entry): """ Test renderer when a single reverse fk relation is passed. """ - rendered = render_dummy_test_serialized_view(DummyTestViewSet) + rendered = render_dummy_test_serialized_view(DummyTestViewSet, entry) assert rendered -def test_render_format_field_names(settings): +def test_render_format_field_names(db, settings, entry): """Test that json field is kept untouched.""" settings.JSON_API_FORMAT_FIELD_NAMES = "dasherize" - rendered = render_dummy_test_serialized_view(DummyTestViewSet) + rendered = render_dummy_test_serialized_view(DummyTestViewSet, entry) result = json.loads(rendered.decode()) assert result["data"]["attributes"]["json-field"] == {"JsonKey": "JsonValue"} diff --git a/example/tests/unit/test_renderers.py b/example/tests/unit/test_renderers.py index 47d37b5b..00eaf28b 100644 --- a/example/tests/unit/test_renderers.py +++ b/example/tests/unit/test_renderers.py @@ -88,25 +88,25 @@ def render_dummy_test_serialized_view(view_class, instance): return renderer.render(serializer.data, renderer_context={"view": view_class()}) -def test_simple_reverse_relation_included_renderer(): +def test_simple_reverse_relation_included_renderer(db, entry): """ Test renderer when a single reverse fk relation is passed. """ - rendered = render_dummy_test_serialized_view(DummyTestViewSet, Entry()) + rendered = render_dummy_test_serialized_view(DummyTestViewSet, entry) assert rendered -def test_simple_reverse_relation_included_read_only_viewset(): - rendered = render_dummy_test_serialized_view(ReadOnlyDummyTestViewSet, Entry()) +def test_simple_reverse_relation_included_read_only_viewset(db, entry): + rendered = render_dummy_test_serialized_view(ReadOnlyDummyTestViewSet, entry) assert rendered -def test_render_format_field_names(settings): +def test_render_format_field_names(db, entry, settings): """Test that json field is kept untouched.""" settings.JSON_API_FORMAT_FIELD_NAMES = "dasherize" - rendered = render_dummy_test_serialized_view(DummyTestViewSet, Entry()) + rendered = render_dummy_test_serialized_view(DummyTestViewSet, entry) result = json.loads(rendered.decode()) assert result["data"]["attributes"]["json-field"] == {"JsonKey": "JsonValue"} diff --git a/setup.cfg b/setup.cfg index 527ddd6b..2eb90b9b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -58,6 +58,8 @@ DJANGO_SETTINGS_MODULE=example.settings.test filterwarnings = error::DeprecationWarning error::PendingDeprecationWarning + # Remove when DRF is not depending on it anymore + ignore:The django.utils.timezone.utc alias is deprecated. testpaths = example tests diff --git a/setup.py b/setup.py index b8b68b52..6ac4d9f3 100755 --- a/setup.py +++ b/setup.py @@ -97,7 +97,7 @@ def get_package_data(package): install_requires=[ "inflection>=0.5.0", "djangorestframework>=3.12,<3.14", - "django>=3.2,<4.1", + "django>=3.2,<4.2", ], extras_require={ "django-polymorphic": ["django-polymorphic>=3.0"], diff --git a/tox.ini b/tox.ini index cee02210..4d52ce48 100644 --- a/tox.ini +++ b/tox.ini @@ -1,13 +1,14 @@ [tox] envlist = py{37,38,39,310}-django32-drf{312,313,master}, - py{38,39,310}-django40-drf{313,master}, + py{38,39,310}-django{40,41}-drf{313,master}, lint,docs [testenv] deps = django32: Django>=3.2,<3.3 - django40: Django>=4.0,<5.0 + django40: Django>=4.0,<4.1 + django41: Django>=4.1,<4.2 drf312: djangorestframework>=3.12,<3.13 drf313: djangorestframework>=3.13,<3.14 drfmaster: https://github.com/encode/django-rest-framework/archive/master.zip @@ -44,5 +45,5 @@ deps = commands = sphinx-build -W -b html -d docs/_build/doctrees docs docs/_build/html -[testenv:py{37,38,39,310}-django{32,40}-drfmaster] +[testenv:py{37,38,39,310}-django{32,40,41}-drfmaster] ignore_outcome = true