Skip to content

Add support for Django 3.1 #835

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 5, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ matrix:
- env: TOXENV=py36-django30-drfmaster
- env: TOXENV=py37-django30-drfmaster
- env: TOXENV=py38-django30-drfmaster
- env: TOXENV=py36-django31-drfmaster
- env: TOXENV=py37-django31-drfmaster
- env: TOXENV=py38-django31-drfmaster

include:
- python: 3.6
Expand All @@ -32,6 +35,10 @@ matrix:
env: TOXENV=py36-django30-drf312
- python: 3.6
env: TOXENV=py36-django30-drfmaster
- python: 3.6
env: TOXENV=py36-django31-drf312
- python: 3.6
env: TOXENV=py36-django31-drfmaster

- python: 3.7
env: TOXENV=py37-django22-drf312
Expand All @@ -41,6 +48,10 @@ matrix:
env: TOXENV=py37-django30-drf312
- python: 3.7
env: TOXENV=py37-django30-drfmaster
- python: 3.7
env: TOXENV=py37-django31-drf312
- python: 3.7
env: TOXENV=py37-django31-drfmaster

- python: 3.8
env: TOXENV=py38-django22-drf312
Expand All @@ -50,6 +61,10 @@ matrix:
env: TOXENV=py38-django30-drf312
- python: 3.8
env: TOXENV=py38-django30-drfmaster
- python: 3.8
env: TOXENV=py38-django31-drf312
- python: 3.8
env: TOXENV=py38-django31-drfmaster

install:
- pip install tox
Expand Down
8 changes: 5 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,17 @@ any parts of the framework not mentioned in the documentation should generally b

## [Unreleased]

### Added

* Added support for Django REST framework 3.12
* Added support for Django 3.1

### Removed

* Removed support for Django 1.11.
* Removed support for Django 2.1.
* Removed support for Django REST framework 3.10, 3.11

### Added
* Added support for Django REST framework 3.12


## [3.2.0] - 2020-08-26

Expand Down
2 changes: 1 addition & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ Requirements
------------

1. Python (3.5, 3.6, 3.7, 3.8)
2. Django (2.2, 3.0)
2. Django (2.2, 3.0, 3.1)
3. Django REST Framework (3.12)

We **highly** recommend and only officially support the latest patch release of each Python, Django and REST Framework series.
Expand Down
2 changes: 1 addition & 1 deletion docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ like the following:
## Requirements

1. Python (3.5, 3.6, 3.7, 3.8)
2. Django (2.2, 3.0)
2. Django (2.2, 3.0, 3.1)
3. Django REST Framework (3.12)

We **highly** recommend and only officially support the latest patch release of each Python, Django and REST Framework series.
Expand Down
7 changes: 3 additions & 4 deletions example/tests/test_errors.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import pytest
from django.conf.urls import url
from django.test import override_settings
from django.urls import reverse
from django.urls import path, reverse
from rest_framework import views

from rest_framework_json_api import serializers
Expand Down Expand Up @@ -51,8 +50,8 @@ def post(self, request, *args, **kwargs):


urlpatterns = [
url('entries-nested', DummyTestView.as_view(),
name='entries-nested-list')
path('entries-nested', DummyTestView.as_view(),
name='entries-nested-list')
]


Expand Down
5 changes: 2 additions & 3 deletions example/tests/test_parsers.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import json
from io import BytesIO

from django.conf.urls import url
from django.test import TestCase, override_settings
from django.urls import reverse
from django.urls import path, reverse
from rest_framework import status, views
from rest_framework.exceptions import ParseError
from rest_framework.response import Response
Expand Down Expand Up @@ -104,7 +103,7 @@ def patch(self, request, *args, **kwargs):


urlpatterns = [
url(r'repeater$', DummyAPIView.as_view(), name='repeater'),
path('repeater', DummyAPIView.as_view(), name='repeater'),
]


Expand Down
84 changes: 42 additions & 42 deletions example/urls_test.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from django.conf.urls import include, url
from django.conf.urls import re_path
from rest_framework import routers

from .api.resources.identity import GenericIdentity, Identity
Expand Down Expand Up @@ -41,50 +41,50 @@
router.register(r'identities', Identity)

urlpatterns = [
url(r'^', include(router.urls)),

# old tests
url(r'identities/default/(?P<pk>\d+)$',
GenericIdentity.as_view(), name='user-default'),
re_path(r'identities/default/(?P<pk>\d+)$',
GenericIdentity.as_view(), name='user-default'),


url(r'^entries/(?P<entry_pk>[^/.]+)/blog$',
BlogViewSet.as_view({'get': 'retrieve'}),
name='entry-blog'
),
url(r'^entries/(?P<entry_pk>[^/.]+)/comments$',
CommentViewSet.as_view({'get': 'list'}),
name='entry-comments'
),
url(r'^entries/(?P<entry_pk>[^/.]+)/suggested/$',
EntryViewSet.as_view({'get': 'list'}),
name='entry-suggested'
),
url(r'^drf-entries/(?P<entry_pk>[^/.]+)/suggested/$',
DRFEntryViewSet.as_view({'get': 'list'}),
name='drf-entry-suggested'
),
url(r'entries/(?P<entry_pk>[^/.]+)/authors$',
AuthorViewSet.as_view({'get': 'list'}),
name='entry-authors'),
url(r'entries/(?P<entry_pk>[^/.]+)/featured$',
EntryViewSet.as_view({'get': 'retrieve'}),
name='entry-featured'),
re_path(r'^entries/(?P<entry_pk>[^/.]+)/blog$',
BlogViewSet.as_view({'get': 'retrieve'}),
name='entry-blog'
),
re_path(r'^entries/(?P<entry_pk>[^/.]+)/comments$',
CommentViewSet.as_view({'get': 'list'}),
name='entry-comments'
),
re_path(r'^entries/(?P<entry_pk>[^/.]+)/suggested/$',
EntryViewSet.as_view({'get': 'list'}),
name='entry-suggested'
),
re_path(r'^drf-entries/(?P<entry_pk>[^/.]+)/suggested/$',
DRFEntryViewSet.as_view({'get': 'list'}),
name='drf-entry-suggested'
),
re_path(r'entries/(?P<entry_pk>[^/.]+)/authors$',
AuthorViewSet.as_view({'get': 'list'}),
name='entry-authors'),
re_path(r'entries/(?P<entry_pk>[^/.]+)/featured$',
EntryViewSet.as_view({'get': 'retrieve'}),
name='entry-featured'),

url(r'^authors/(?P<pk>[^/.]+)/(?P<related_field>\w+)/$',
AuthorViewSet.as_view({'get': 'retrieve_related'}),
name='author-related'),
re_path(r'^authors/(?P<pk>[^/.]+)/(?P<related_field>\w+)/$',
AuthorViewSet.as_view({'get': 'retrieve_related'}),
name='author-related'),

url(r'^entries/(?P<pk>[^/.]+)/relationships/(?P<related_field>\w+)$',
EntryRelationshipView.as_view(),
name='entry-relationships'),
url(r'^blogs/(?P<pk>[^/.]+)/relationships/(?P<related_field>\w+)$',
BlogRelationshipView.as_view(),
name='blog-relationships'),
url(r'^comments/(?P<pk>[^/.]+)/relationships/(?P<related_field>\w+)$',
CommentRelationshipView.as_view(),
name='comment-relationships'),
url(r'^authors/(?P<pk>[^/.]+)/relationships/(?P<related_field>\w+)$',
AuthorRelationshipView.as_view(),
name='author-relationships'),
re_path(r'^entries/(?P<pk>[^/.]+)/relationships/(?P<related_field>\w+)$',
EntryRelationshipView.as_view(),
name='entry-relationships'),
re_path(r'^blogs/(?P<pk>[^/.]+)/relationships/(?P<related_field>\w+)$',
BlogRelationshipView.as_view(),
name='blog-relationships'),
re_path(r'^comments/(?P<pk>[^/.]+)/relationships/(?P<related_field>\w+)$',
CommentRelationshipView.as_view(),
name='comment-relationships'),
re_path(r'^authors/(?P<pk>[^/.]+)/relationships/(?P<related_field>\w+)$',
AuthorRelationshipView.as_view(),
name='author-relationships'),
]

urlpatterns += router.urls
3 changes: 2 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,14 +84,15 @@ def get_package_data(package):
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Topic :: Internet :: WWW/HTTP',
'Topic :: Software Development :: Libraries :: Application Frameworks',
'Topic :: Software Development :: Libraries :: Python Modules',
],
install_requires=[
'inflection>=0.3.0',
'djangorestframework>=3.12,<3.13',
'django>=2.2,<3.1',
'django>=2.2,<3.2',
],
extras_require={
'django-polymorphic': ['django-polymorphic>=2.0'],
Expand Down
3 changes: 2 additions & 1 deletion tox.ini
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
[tox]
envlist =
py{35,36,37,38}-django22-drf{312,master},
py{36,37,38}-django30-drf{312,master},
py{36,37,38}-django{30.31}-drf{312,master},
lint,docs

[testenv]
deps =
django22: Django>=2.2,<2.3
django30: Django>=3.0,<3.1
django31: Django>=3.1,<3.2
drf312: djangorestframework>=3.12,<3.13
drfmaster: https://github.com/encode/django-rest-framework/archive/master.zip
-rrequirements/requirements-testing.txt
Expand Down