8000 OpenAPI schemas: Ensure lazy field descriptions are converted to str(… · coderanger/django-rest-framework@ca72787 · GitHub
[go: up one dir, main page]

Skip to content

Commit ca72787

Browse files
chrisv2carltongibson
authored andcommitted
OpenAPI schemas: Ensure lazy field descriptions are converted to str(). (encode#6832)
1 parent 659375f commit ca72787

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

rest_framework/schemas/openapi.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,7 @@ def _map_serializer(self, serializer):
377377
if field.default and field.default != empty: # why don't they use None?!
378378
schema['default'] = field.default
379379
if field.help_text:
380-
schema['description'] = field.help_text
380+
schema['description'] = str(field.help_text)
381381
self._map_field_validators(field.validators, schema)
382382

383383
properties[field.field_name] = schema

tests/schemas/test_openapi.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import pytest
22
from django.conf.urls import url
33
from django.test import RequestFactory, TestCase, override_settings
4+
from django.utils.translation import gettext_lazy as _
45

56
from rest_framework import filters, generics, pagination, routers, serializers
67
from rest_framework.compat import uritemplate
@@ -52,6 +53,15 @@ def test_list_field_mapping(self):
5253
with self.subTest(field=field):
5354
assert inspector._map_field(field) == mapping
5455

56+
def test_lazy_string_field(self):
57+
class Serializer(serializers.Serializer):
58+
text = serializers.CharField(help_text=_('lazy string'))
59+
60+
inspector = AutoSchema()
61+
62+
data = inspector._map_serializer(Serializer())
63+
assert isinstance(data['properties']['text']['description'], str), "description must be str"
64+
5565

5666
@pytest.mark.skipif(uritemplate is None, reason='uritemplate not installed.')
5767
class TestOperationIntrospection(TestCase):

0 commit comments

Comments
 (0)
0