Skip to content

Commit 7428f58

Browse files
committed
Add DEFAULT_SCHEMA_GENERATOR_CLASS setting
1 parent d99550e commit 7428f58

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

rest_framework/management/commands/generate_schema.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
from django.core.management.base import BaseCommand
22

3-
from rest_framework.renderers import CoreJSONRenderer
4-
from rest_framework.schemas import SchemaGenerator
3+
from rest_framework.renderers import CoreJSONRenderer, JSONRenderer
4+
from rest_framework.schemas.generators import OpenAPISchemaGenerator
5+
from rest_framework.settings import api_settings
56

67

78
class Command(BaseCommand):
@@ -26,11 +27,21 @@ def add_arguments(self, parser):
2627
pass
2728

2829
def handle(self, *args, **options):
30+
generator_class = self._get_generator_class()
31+
generator = generator_class()
2932

30-
renderer = CoreJSONRenderer()
31-
generator = SchemaGenerator()
3233
schema = generator.get_schema(request=None, public=True)
3334

35+
renderer = self._get_renderer(generator)
3436
rendered_schema = renderer.render(schema, renderer_context={}).decode('utf8')
3537

3638
self.stdout.write(rendered_schema)
39+
40+
def _get_generator_class(self):
41+
return api_settings.DEFAULT_SCHEMA_GENERATOR_CLASS
42+
43+
def _get_renderer(self, generator):
44+
if isinstance(generator, OpenAPISchemaGenerator):
45+
return JSONRenderer()
46+
else:
47+
return CoreJSONRenderer()

rest_framework/settings.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757

5858
# Schema
5959
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.AutoSchema',
60+
'DEFAULT_SCHEMA_GENERATOR_CLASS': 'rest_framework.schemas.generators.SchemaGenerator',
6061

6162
# Throttling
6263
'DEFAULT_THROTTLE_RATES': {
@@ -144,6 +145,7 @@
144145
'DEFAULT_PAGINATION_CLASS',
145146
'DEFAULT_FILTER_BACKENDS',
146147
'DEFAULT_SCHEMA_CLASS',
148+
'DEFAULT_SCHEMA_GENERATOR_CLASS',
147149
'EXCEPTION_HANDLER',
148150
'TEST_REQUEST_RENDERER_CLASSES',
149151
'UNAUTHENTICATED_USER',

0 commit comments

Comments
 (0)