Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit a4262dd

Browse files
Added missing error message when no resource name is configured on serializer (#1020)
1 parent 3db6bce commit a4262dd

File tree

4 files changed

+22
-1
lines changed

4 files changed

+22
-1
lines changed

‎AUTHORS‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ Jamie Bliss <astronouth7303@gmail.com>
1515
Jason Housley <housleyjk@gmail.com>
1616
Jeppe Fihl-Pearson <jeppe@tenzer.dk>
1717
Jerel Unruh <mail@unruhdesigns.com>
18+
Jonas Kiefer <https://github.com/jokiefer>
1819
Jonas Metzener <jonas.metzener@adfinis.com>
1920
Jonathan Senecal <contact@jonathansenecal.com>
2021
Joseba Mendivil <git@jma.email>

‎CHANGELOG.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ any parts of the framework not mentioned in the documentation should generally b
2222
* Raise comprehensible error when reserved field names `meta` and `results` are used.
2323
* Use `relationships` in the error object `pointer` when the field is actually a relationship.
2424
* Added missing inflection to the generated OpenAPI schema.
25+
* Added missing error message when `resource_name` is not properly configured.
2526

2627
### Changed
2728

‎rest_framework_json_api/utils.py‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,10 @@ def get_resource_type_from_serializer(serializer):
320320
return meta.resource_name
321321
elif hasattr(meta, "model"):
322322
return get_resource_type_from_model(meta.model)
323-
raise AttributeError()
323+
raise AttributeError(
324+
f"can not detect 'resource_name' on serializer '{serializer.__class__.__name__}'"
325+
f" in module '{serializer.__class__.__module__}'"
326+
)
324327

325328

326329
def get_included_resources(request, serializer=None):

‎tests/test_utils.py‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import pytest
22
from django.db import models
33
from rest_framework import status
4+
from rest_framework.fields import Field
45
from rest_framework.generics import GenericAPIView
56
from rest_framework.response import Response
67
from rest_framework.views import APIView
@@ -15,6 +16,7 @@
1516
get_included_serializers,
1617
get_related_resource_type,
1718
get_resource_name,
19+
get_resource_type_from_serializer,
1820
undo_format_field_name,
1921
undo_format_field_names,
2022
undo_format_link_segment,
@@ -377,3 +379,17 @@ class Meta:
377379
}
378380

379381
assert included_serializers == expected_included_serializers
382+
383+
384+
def test_get_resource_type_from_serializer_without_resource_name_raises_error():
385+
class SerializerWithoutResourceName(serializers.Serializer):
386+
something = Field()
387+
388+
serializer = SerializerWithoutResourceName()
389+
390+
with pytest.raises(AttributeError) as excinfo:
391+
get_resource_type_from_serializer(serializer=serializer)
392+
assert str(excinfo.value) == (
393+
"can not detect 'resource_name' on serializer "
394+
"'SerializerWithoutResourceName' in module 'tests.test_utils'"
395+
)

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /