File tree Expand file tree Collapse file tree 4 files changed +22
-1
lines changed Expand file tree Collapse file tree 4 files changed +22
-1
lines changed Original file line number Diff line number Diff line change @@ -15,6 +15,7 @@ Jamie Bliss <astronouth7303@gmail.com>
1515Jason Housley <housleyjk@gmail.com>
1616Jeppe Fihl-Pearson <jeppe@tenzer.dk>
1717Jerel Unruh <mail@unruhdesigns.com>
18+ Jonas Kiefer <https://github.com/jokiefer>
1819Jonas Metzener <jonas.metzener@adfinis.com>
1920Jonathan Senecal <contact@jonathansenecal.com>
2021Joseba Mendivil <git@jma.email>
Original file line number Diff line number Diff 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
Original file line number Diff line number Diff 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
326329def get_included_resources (request , serializer = None ):
Original file line number Diff line number Diff line change 11import pytest
22from django .db import models
33from rest_framework import status
4+ from rest_framework .fields import Field
45from rest_framework .generics import GenericAPIView
56from rest_framework .response import Response
67from rest_framework .views import APIView
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+ )
You can’t perform that action at this time.
0 commit comments