Movatterモバイル変換


[0]ホーム

URL:


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

Commit7cf5c19

Browse files
committed
Fix OpenAPI operation name plural appropriately
1 parentb1004a4 commit7cf5c19

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

‎requirements/requirements-optionals.txt‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ coreapi==2.3.1
33
coreschema==0.0.4
44
django-filter>=2.4.0,<3.0
55
django-guardian>=2.4.0,<2.5
6+
inflection==0.5.1
67
markdown==3.3;python_version>="3.6"
78
markdown==3.2.2;python_version=="3.5"
89
psycopg2-binary>=2.8.5,<2.9

‎rest_framework/schemas/openapi.py‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
)
1212
fromdjango.dbimportmodels
1313
fromdjango.utils.encodingimportforce_str
14+
frominflectionimportpluralize
1415

1516
fromrest_frameworkimport (
1617
RemovedInDRF314Warning,exceptions,renderers,serializers
@@ -247,8 +248,8 @@ def get_operation_id_base(self, path, method, action):
247248
ifname.endswith(action.title()):# ListView, UpdateAPIView, ThingDelete ...
248249
name=name[:-len(action)]
249250

250-
ifaction=='list'andnotname.endswith('s'):# listThings instead of listThing
251-
name+='s'
251+
ifaction=='list':
252+
name=pluralize(name)
252253

253254
returnname
254255

‎tests/schemas/test_openapi.py‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -695,6 +695,21 @@ def test_operation_id_custom_name(self):
695695
operationId=inspector.get_operation_id(path,method)
696696
assertoperationId=='listUlysses'
697697

698+
deftest_operation_id_plural(self):
699+
path='/'
700+
method='GET'
701+
702+
view=create_view(
703+
views.ExampleGenericAPIView,
704+
method,
705+
create_request(path),
706+
)
707+
inspector=AutoSchema(operation_id_base='City')
708+
inspector.view=view
709+
710+
operationId=inspector.get_operation_id(path,method)
711+
assertoperationId=='listCities'
712+
698713
deftest_operation_id_override_get(self):
699714
classCustomSchema(AutoSchema):
700715
defget_operation_id(self,path,method):

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp