Skip to content

Commit 643e402

Browse files
slivercn2ygk
authored andcommitted
Remove all deprecated code (django-json-api#688)
Fixes django-json-api#662
1 parent 7efd877 commit 643e402

16 files changed

+22
-463
lines changed

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ any parts of the framework not mentioned in the documentation should generally b
1010

1111
## [Unreleased]
1212

13+
This release is not backwards compatible. For easy migration best upgrade first to version
14+
2.8.0 and resolve all deprecation warnings before updating to 3.0.0
15+
1316
### Added
1417

1518
* Add support for Django REST framework 3.10.
@@ -21,6 +24,11 @@ any parts of the framework not mentioned in the documentation should generally b
2124
* Removed obsolete dependency six.
2225
* Removed support for Django REST Framework <=3.8.
2326
* Removed support for Django 2.0.
27+
* Removed obsolete mixins `MultipleIDMixin` and `PrefetchForIncludesHelperMixin`
28+
* Removed obsolete settings `JSON_API_FORMAT_KEYS`, `JSON_API_FORMAT_RELATION_KEYS` and
29+
`JSON_API_PLURALIZE_RELATION_TYPE`
30+
* Removed obsolete util methods `format_keys` and `format_relation_name`
31+
* Removed obsolete pagination classes `PageNumberPagination` and `LimitOffsetPagination`
2432

2533
### Fixed
2634

example/api/resources/identity.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
from rest_framework.decorators import action
55
from rest_framework.response import Response
66

7-
from rest_framework_json_api import mixins, utils
7+
from rest_framework_json_api import utils
88

99
from ..serializers.identity import IdentitySerializer
1010
from ..serializers.post import PostSerializer
1111

1212

13-
class Identity(mixins.MultipleIDMixin, viewsets.ModelViewSet):
13+
class Identity(viewsets.ModelViewSet):
1414
queryset = auth_models.User.objects.all().order_by('pk')
1515
serializer_class = IdentitySerializer
1616

example/tests/test_multiple_id_mixin.py

Lines changed: 0 additions & 82 deletions
This file was deleted.

example/tests/test_parsers.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import json
22
from io import BytesIO
33

4-
import pytest
54
from django.test import TestCase, override_settings
65
from rest_framework.exceptions import ParseError
76

@@ -35,17 +34,6 @@ def __init__(self):
3534

3635
self.string = json.dumps(data)
3736

38-
@pytest.mark.filterwarnings("ignore:`format_keys` function and `JSON_API_FORMAT_KEYS`")
39-
@override_settings(JSON_API_FORMAT_KEYS='camelize')
40-
def test_parse_include_metadata_format_keys(self):
41-
parser = JSONParser()
42-
43-
stream = BytesIO(self.string.encode('utf-8'))
44-
data = parser.parse(stream, None, self.parser_context)
45-
46-
self.assertEqual(data['_meta'], {'random_key': 'random_value'})
47-
self.assertEqual(data['json_value'], {'json_key': 'JsonValue'})
48-
4937
@override_settings(JSON_API_FORMAT_FIELD_NAMES='dasherize')
5038
def test_parse_include_metadata_format_field_names(self):
5139
parser = JSONParser()

example/tests/unit/test_default_drf_serializers.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -69,17 +69,6 @@ def test_render_format_field_names(settings):
6969
assert result['data']['attributes']['json-field'] == {'JsonKey': 'JsonValue'}
7070

7171

72-
@pytest.mark.filterwarnings("ignore:`format_keys` function and `JSON_API_FORMAT_KEYS`")
73-
def test_render_format_keys(settings):
74-
"""Test that json field value keys are formated."""
75-
delattr(settings, 'JSON_API_FORMAT_FILED_NAMES')
76-
settings.JSON_API_FORMAT_KEYS = 'dasherize'
77-
rendered = render_dummy_test_serialized_view(DummyTestViewSet)
78-
79-
result = json.loads(rendered.decode())
80-
assert result['data']['attributes']['json-field'] == {'json-key': 'JsonValue'}
81-
82-
8372
@pytest.mark.django_db
8473
def test_blog_create(client):
8574

example/tests/unit/test_pagination.py

Lines changed: 0 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
import sys
21
from collections import OrderedDict
32

4-
import pytest
53
from rest_framework.request import Request
64
from rest_framework.test import APIRequestFactory
75
from rest_framework.utils.urls import replace_query_param
@@ -78,72 +76,3 @@ def test_valid_offset_limit(self):
7876

7977
assert queryset == list(range(offset + 1, next_offset + 1))
8078
assert content == expected_content
81-
82-
@pytest.mark.xfail((sys.version_info.major, sys.version_info.minor) == (2, 7),
83-
reason="python2.7 fails to generate DeprecationWarrning for unknown reason")
84-
def test_limit_offset_deprecation(self):
85-
with pytest.warns(DeprecationWarning) as record:
86-
pagination.LimitOffsetPagination()
87-
assert len(record) == 1
88-
assert 'LimitOffsetPagination is deprecated' in str(record[0].message)
89-
90-
class MyInheritedLimitOffsetPagination(pagination.LimitOffsetPagination):
91-
"""
92-
Inherit the default values
93-
"""
94-
pass
95-
96-
class MyOverridenLimitOffsetPagination(pagination.LimitOffsetPagination):
97-
"""
98-
Explicitly set max_limit to the "old" values.
99-
"""
100-
max_limit = None
101-
102-
def test_my_limit_offset_deprecation(self):
103-
with pytest.warns(DeprecationWarning) as record:
104-
self.MyInheritedLimitOffsetPagination()
105-
assert len(record) == 1
106-
assert 'LimitOffsetPagination is deprecated' in str(record[0].message)
107-
108-
with pytest.warns(None) as record:
109-
self.MyOverridenLimitOffsetPagination()
110-
assert len(record) == 0
111-
112-
113-
class TestPageNumber:
114-
"""
115-
Unit tests for `pagination.JsonApiPageNumberPagination`.
116-
"""
117-
118-
@pytest.mark.xfail((sys.version_info.major, sys.version_info.minor) == (2, 7),
119-
reason="python2.7 fails to generate DeprecationWarrning for unknown reason")
120-
def test_page_number_deprecation(self):
121-
with pytest.warns(DeprecationWarning) as record:
122-
pagination.PageNumberPagination()
123-
assert len(record) == 1
124-
assert 'PageNumberPagination is deprecated' in str(record[0].message)
125-
126-
class MyInheritedPageNumberPagination(pagination.PageNumberPagination):
127-
"""
128-
Inherit the default values
129-
"""
130-
pass
131-
132-
class MyOverridenPageNumberPagination(pagination.PageNumberPagination):
133-
"""
134-
Explicitly set page_query_param and page_size_query_param to the "old" values.
135-
"""
136-
page_query_param = "page"
137-
page_size_query_param = "page_size"
138-
139-
@pytest.mark.xfail((sys.version_info.major, sys.version_info.minor) == (2, 7),
140-
reason="python2.7 fails to generate DeprecationWarrning for unknown reason")
141-
def test_my_page_number_deprecation(self):
142-
with pytest.warns(DeprecationWarning) as record:
143-
self.MyInheritedPageNumberPagination()
144-
assert len(record) == 1
145-
assert 'PageNumberPagination is deprecated' in str(record[0].message)
146-
147-
with pytest.warns(None) as record:
148-
self.MyOverridenPageNumberPagination()
149-
assert len(record) == 0

example/tests/unit/test_renderers.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -83,17 +83,6 @@ def test_render_format_field_names(settings):
8383
assert result['data']['attributes']['json-field'] == {'JsonKey': 'JsonValue'}
8484

8585

86-
@pytest.mark.filterwarnings("ignore:`format_keys` function and `JSON_API_FORMAT_KEYS`")
87-
def test_render_format_keys(settings):
88-
"""Test that json field value keys are formated."""
89-
delattr(settings, 'JSON_API_FORMAT_FILED_NAMES')
90-
settings.JSON_API_FORMAT_KEYS = 'dasherize'
91-
rendered = render_dummy_test_serialized_view(DummyTestViewSet, Entry())
92-
93-
result = json.loads(rendered.decode())
94-
assert result['data']['attributes']['json-field'] == {'json-key': 'JsonValue'}
95-
96-
9786
def test_writeonly_not_in_response():
9887
"""Test that writeonly fields are not shown in list response"""
9988

example/tests/unit/test_utils.py

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -61,30 +61,6 @@ def test_get_resource_name():
6161
assert 'users' == utils.get_resource_name(context), 'derived from non-model serializer'
6262

6363

64-
@pytest.mark.filterwarnings("ignore:`format_keys` function and `JSON_API_FORMAT_KEYS`")
65-
def test_format_keys():
66-
underscored = {
67-
'first_name': 'a',
68-
'last_name': 'b',
69-
}
70-
71-
output = {'firstName': 'a', 'lastName': 'b'}
72-
result = pytest.deprecated_call(utils.format_keys, underscored, 'camelize')
73-
assert result == output
74-
75-
output = {'FirstName': 'a', 'LastName': 'b'}
76-
assert utils.format_keys(underscored, 'capitalize') == output
77-
78-
output = {'first-name': 'a', 'last-name': 'b'}
79-
assert utils.format_keys(underscored, 'dasherize') == output
80-
81-
new_input = {'firstName': 'a', 'lastName': 'b'}
82-
assert utils.format_keys(new_input, 'underscore') == underscored
83-
84-
output = [{'first-name': 'a', 'last-name': 'b'}]
85-
assert utils.format_keys([underscored], 'dasherize') == output
86-
87-
8864
@pytest.mark.parametrize("format_type,output", [
8965
('camelize', {'fullName': {'last-name': 'a', 'first-name': 'b'}}),
9066
('capitalize', {'FullName': {'last-name': 'a', 'first-name': 'b'}}),

pytest.ini

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,3 @@ DJANGO_SETTINGS_MODULE=example.settings.test
33
filterwarnings =
44
error::DeprecationWarning
55
error::PendingDeprecationWarning
6-
# TODO: restructure tests so this can be ignored on a test level
7-
ignore:MultipleIDMixin is deprecated

rest_framework_json_api/mixins.py

Lines changed: 0 additions & 38 deletions
This file was deleted.

0 commit comments

Comments
 (0)