Skip to content

Commit a450de6

Browse files
SafaAlfulaijsliverc
authored andcommitted
Use current serializer class
1 parent 42533f5 commit a450de6

File tree

9 files changed

+24
-36
lines changed

9 files changed

+24
-36
lines changed

example/serializers.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -111,8 +111,8 @@ def __init__(self, *args, **kwargs):
111111
comments = relations.ResourceRelatedField(many=True, read_only=True)
112112
# many related hyperlinked from model
113113
comments_hyperlinked = relations.HyperlinkedRelatedField(
114-
related_link_view_name="entry-related",
115-
related_link_related_name="comments",
114+
related_link_view_name="entry-comments",
115+
related_link_url_kwarg="entry_pk",
116116
self_link_view_name="entry-relationships",
117117
many=True,
118118
read_only=True,

example/tests/integration/test_non_paginated_responses.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def test_multiple_entries_no_pagination(multiple_entries, client):
4242
},
4343
"commentsHyperlinked": {
4444
"links": {
45-
"related": "http://testserver/entries/1/comments/",
45+
"related": "http://testserver/entries/1/comments",
4646
"self": "http://testserver/entries/1/relationships/comments_hyperlinked",
4747
}
4848
},
@@ -97,7 +97,7 @@ def test_multiple_entries_no_pagination(multiple_entries, client):
9797
},
9898
"commentsHyperlinked": {
9999
"links": {
100-
"related": "http://testserver/entries/2/comments/",
100+
"related": "http://testserver/entries/2/comments",
101101
"self": "http://testserver/entries/2/relationships/comments_hyperlinked",
102102
}
103103
},

example/tests/integration/test_pagination.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def test_pagination_with_single_entry(single_entry, client):
4242
},
4343
"commentsHyperlinked": {
4444
"links": {
45-
"related": "http://testserver/entries/1/comments/",
45+
"related": "http://testserver/entries/1/comments",
4646
"self": "http://testserver/entries/1/relationships/comments_hyperlinked",
4747
}
4848
},

example/tests/test_filters.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,7 @@ def test_search_keywords(self):
491491
"commentsHyperlinked": {
492492
"links": {
493493
"self": "http://testserver/entries/7/relationships/comments_hyperlinked", # noqa: E501
494-
"related": "http://testserver/entries/7/comments/",
494+
"related": "http://testserver/entries/7/comments",
495495
}
496496
},
497497
"suggested": {

example/tests/test_views.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -651,7 +651,7 @@ def test_get_object_gives_correct_entry(self):
651651
"commentsHyperlinked": {
652652
"links": {
653653
"related": "http://testserver/entries/{}"
654-
"/comments/".format(self.second_entry.id),
654+
"/comments".format(self.second_entry.id),
655655
"self": "http://testserver/entries/{}/relationships"
656656
"/comments_hyperlinked".format(self.second_entry.id),
657657
}

example/urls.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@
4545
BlogViewSet.as_view({"get": "retrieve"}),
4646
name="entry-blog",
4747
),
48+
url(
49+
r"entries/(?P<entry_pk>[^/.]+)/comments$",
50+
CommentViewSet.as_view({"get": "list"}),
51+
name="entry-comments",
52+
),
4853
url(
4954
r"entries/(?P<entry_pk>[^/.]+)/authors$",
5055
AuthorViewSet.as_view({"get": "list"}),
@@ -55,11 +60,6 @@
5560
EntryViewSet.as_view({"get": "retrieve"}),
5661
name="entry-featured",
5762
),
58-
url(
59-
r"^entries/(?P<pk>[^/.]+)/(?P<related_field>\w+)/$",
60-
EntryViewSet.as_view({"get": "retrieve_related"}),
61-
name="entry-related",
62-
),
6363
url(
6464
r"^authors/(?P<pk>[^/.]+)/(?P<related_field>\w+)/$",
6565
AuthorViewSet.as_view({"get": "retrieve_related"}),

example/urls_test.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@
5252
BlogViewSet.as_view({"get": "retrieve"}),
5353
name="entry-blog",
5454
),
55+
re_path(
56+
r"^entries/(?P<entry_pk>[^/.]+)/comments$",
57+
CommentViewSet.as_view({"get": "list"}),
58+
name="entry-comments",
59+
),
5560
re_path(
5661
r"^entries/(?P<entry_pk>[^/.]+)/suggested/$",
5762
EntryViewSet.as_view({"get": "list"}),
@@ -72,11 +77,6 @@
7277
EntryViewSet.as_view({"get": "retrieve"}),
7378
name="entry-featured",
7479
),
75-
re_path(
76-
r"^entries/(?P<pk>[^/.]+)/(?P<related_field>\w+)/$",
77-
EntryViewSet.as_view({"get": "retrieve_related"}),
78-
name="entry-related",
79-
),
8080
re_path(
8181
r"^authors/(?P<pk>[^/.]+)/(?P<related_field>\w+)/$",
8282
AuthorViewSet.as_view({"get": "retrieve_related"}),

rest_framework_json_api/relations.py

-8
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
"related_link_view_name",
2828
"related_link_lookup_field",
2929
"related_link_url_kwarg",
30-
"related_link_related_name",
3130
]
3231

3332

@@ -69,8 +68,6 @@ def __init__(self, self_link_view_name=None, related_link_view_name=None, **kwar
6968
"related_link_url_kwarg", self.related_link_lookup_field
7069
)
7170

72-
self.related_link_related_name = kwargs.pop("related_link_related_name", None)
73-
7471
# We include this simply for dependency injection in tests.
7572
# We can't add it as a class attributes or it would expect an
7673
# implicit `self` argument to be passed.
@@ -122,11 +119,6 @@ def get_links(self, obj=None, lookup_field="pk"):
122119
self_kwargs.update({"related_field": format_link_segment(field_name)})
123120
self_link = self.get_url("self", self.self_link_view_name, self_kwargs, request)
124121

125-
if self.related_link_related_name:
126-
self_kwargs.update(
127-
{"related_field": format_link_segment(self.related_link_related_name)}
128-
)
129-
130122
# Assuming RelatedField will be declared in two ways:
131123
# 1. url(r'^authors/(?P<pk>[^/.]+)/(?P<related_field>\w+)/$',
132124
# AuthorViewSet.as_view({'get': 'retrieve_related'}))

rest_framework_json_api/schemas/openapi.py

+7-11
Original file line numberDiff line numberDiff line change
@@ -357,15 +357,14 @@ def _expand_related(self, path, method, view, view_endpoints):
357357
)
358358
if related_view:
359359
action = self._field_is_one_or_many(field, view)
360-
if action:
361-
result.append(
362-
(
363-
path.replace("{related_field}", field),
364-
method,
365-
related_view,
366-
action,
367-
)
360+
result.append(
361+
(
362+
path.replace("{related_field}", field),
363+
method,
364+
related_view,
365+
action,
368366
)
367+
)
369368

370369
return result
371370

@@ -393,9 +392,6 @@ def _find_related_view(self, view_endpoints, related_serializer, parent_view):
393392

394393
def _field_is_one_or_many(self, field, view):
395394
serializer = view.get_serializer()
396-
if field not in serializer.fields:
397-
return None
398-
399395
if isinstance(serializer.fields[field], ManyRelatedField):
400396
return "list"
401397
else:

0 commit comments

Comments
 (0)