Skip to content

Commit a76396b

Browse files
authored
Merge branch 'master' into include_related_field
2 parents 955b28c + 36a60a3 commit a76396b

20 files changed

+226
-85
lines changed

AUTHORS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ Raphael Cohen <[email protected]>
3131
René Kälin <[email protected]>
3232
Roberto Barreda <[email protected]>
3333
Rohith PR <[email protected]>
34+
Safa AlFulaij <[email protected]>
3435
santiavenda <[email protected]>
3536
Sergey Kolomenkin <https://kolomenkin.com>
3637

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,17 @@ any parts of the framework not mentioned in the documentation should generally b
1313
### Added
1414

1515
* Added support for Django 3.2.
16+
* Added support for tags in OAS schema
17+
18+
### Fixed
19+
20+
* Allow `get_serializer_class` to be overwritten when using related urls without defining `serializer_class` fallback
21+
* Preserve field names when no formatting is configured.
22+
23+
### Deprecated
24+
25+
* Deprecated default `format_type` argument of `rest_framework_json_api.utils.format_value`. Use `rest_framework_json_api.utils.format_field_name` or specify specifc `format_type` instead.
26+
* Deprecated `format_type` argument of `rest_framework_json_api.utils.format_link_segment`. Use `format_value` instead.
1627

1728
### Fixed
1829

example/tests/snapshots/snap_test_openapi.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,10 @@
121121
},
122122
"description": "not found"
123123
}
124-
}
124+
},
125+
"tags": [
126+
"authors"
127+
]
125128
}"""
126129

127130
snapshots[
@@ -227,7 +230,10 @@
227230
},
228231
"description": "not found"
229232
}
230-
}
233+
},
234+
"tags": [
235+
"authors"
236+
]
231237
}"""
232238

233239
snapshots[
@@ -411,7 +417,10 @@
411417
},
412418
"description": "[Conflict](https://jsonapi.org/format/#crud-creating-responses-409)"
413419
}
414-
}
420+
},
421+
"tags": [
422+
"authors"
423+
]
415424
}"""
416425

417426
snapshots[
@@ -589,7 +598,10 @@
589598
},
590599
"description": "[Conflict]([Conflict](https://jsonapi.org/format/#crud-updating-responses-409)"
591600
}
592-
}
601+
},
602+
"tags": [
603+
"authors"
604+
]
593605
}"""
594606

595607
snapshots[
@@ -652,5 +664,8 @@
652664
},
653665
"description": "[Resource does not exist](https://jsonapi.org/format/#crud-deleting-responses-404)"
654666
}
655-
}
667+
},
668+
"tags": [
669+
"authors"
670+
]
656671
}"""

example/tests/test_views.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -417,12 +417,11 @@ def test_get_related_serializer_class_many(self):
417417
def test_get_serializer_comes_from_included_serializers(self):
418418
kwargs = {"pk": self.author.id, "related_field": "type"}
419419
view = self._get_view(kwargs)
420-
related_serializers = view.serializer_class.related_serializers
421-
delattr(view.serializer_class, "related_serializers")
420+
related_serializers = view.get_serializer_class().related_serializers
421+
delattr(view.get_serializer_class(), "related_serializers")
422422
got = view.get_related_serializer_class()
423423
self.assertEqual(got, AuthorTypeSerializer)
424-
425-
view.serializer_class.related_serializers = related_serializers
424+
view.get_serializer_class().related_serializers = related_serializers
426425

427426
def test_get_related_serializer_class_raises_error(self):
428427
kwargs = {"pk": self.author.id, "related_field": "unknown"}

example/views.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -208,17 +208,15 @@ class NoFiltersetEntryViewSet(EntryViewSet):
208208

209209
class AuthorViewSet(ModelViewSet):
210210
queryset = Author.objects.all()
211-
serializer_classes = {
212-
"list": AuthorListSerializer,
213-
"retrieve": AuthorDetailSerializer,
214-
}
215-
serializer_class = AuthorSerializer # fallback
216211

217212
def get_serializer_class(self):
218-
try:
219-
return self.serializer_classes.get(self.action, self.serializer_class)
220-
except AttributeError:
221-
return self.serializer_class
213+
serializer_classes = {
214+
"list": AuthorListSerializer,
215+
"retrieve": AuthorDetailSerializer,
216+
}
217+
218+
action = getattr(self, "action", "")
219+
return serializer_classes.get(action, AuthorSerializer)
222220

223221

224222
class CommentViewSet(ModelViewSet):
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
black==20.8b1
2-
flake8==3.9.0
2+
flake8==3.9.1
33
flake8-isort==4.0.0
4-
isort==5.7.0
4+
isort==5.8.0
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
recommonmark==0.7.1
2-
Sphinx==3.5.2
3-
sphinx_rtd_theme==0.5.1
2+
Sphinx==3.5.4
3+
sphinx_rtd_theme==0.5.2
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
twine==3.3.0
1+
twine==3.4.1

requirements/requirements-testing.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
django-debug-toolbar==3.2
1+
django-debug-toolbar==3.2.1
22
factory-boy==3.2.0
3-
Faker==6.6.0
4-
pytest==6.2.2
3+
Faker==8.1.0
4+
pytest==6.2.3
55
pytest-cov==2.11.1
6-
pytest-django==4.1.0
6+
pytest-django==4.2.0
77
pytest-factoryboy==2.1.0
88
snapshottest==0.6.0

rest_framework_json_api/django_filters/backends.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from rest_framework.exceptions import ValidationError
55
from rest_framework.settings import api_settings
66

7-
from rest_framework_json_api.utils import format_value
7+
from rest_framework_json_api.utils import undo_format_field_name
88

99

1010
class DjangoFilterBackend(DjangoFilterBackend):
@@ -119,8 +119,7 @@ def get_filterset_kwargs(self, request, queryset, view):
119119
)
120120
# convert jsonapi relationship path to Django ORM's __ notation
121121
key = m.groupdict()["assoc"].replace(".", "__")
122-
# undo JSON_API_FORMAT_FIELD_NAMES conversion:
123-
key = format_value(key, "underscore")
122+
key = undo_format_field_name(key)
124123
data.setlist(key, val)
125124
filter_keys.append(key)
126125
del data[qp]

0 commit comments

Comments
 (0)