From e49a50c6c38a5a8c60e1e0adb1f0f1ed8bfaa7cd Mon Sep 17 00:00:00 2001 From: Alan Crosswell Date: Thu, 6 Jun 2019 12:42:43 -0400 Subject: [PATCH] add --generator_class CLI option to generateschema --- docs/community/release-notes.md | 1 + rest_framework/management/commands/generateschema.py | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/community/release-notes.md b/docs/community/release-notes.md index a27de2b64..0f88adfc3 100644 --- a/docs/community/release-notes.md +++ b/docs/community/release-notes.md @@ -45,6 +45,7 @@ You can determine your currently installed version using `pip show`: **Date**: [Unreleased][3.10.0-milestone] * Resolve DeprecationWarning with markdown. [#6317][gh6317] +* Add `generateschema --generator_class` CLI option ## 3.9.x series diff --git a/rest_framework/management/commands/generateschema.py b/rest_framework/management/commands/generateschema.py index 631f40290..46077c331 100644 --- a/rest_framework/management/commands/generateschema.py +++ b/rest_framework/management/commands/generateschema.py @@ -1,4 +1,5 @@ from django.core.management.base import BaseCommand +from django.utils.module_loading import import_string from rest_framework import renderers from rest_framework.schemas import coreapi @@ -22,9 +23,13 @@ class Command(BaseCommand): parser.add_argument('--format', dest="format", choices=['openapi', 'openapi-json', 'corejson'], default='openapi', type=str) else: parser.add_argument('--format', dest="format", choices=['openapi', 'openapi-json'], default='openapi', type=str) + parser.add_argument('--generator_class', dest="generator_class", default=None, type=str) def handle(self, *args, **options): - generator_class = self.get_generator_class() + if options['generator_class']: + generator_class = import_string(options['generator_class']) + else: + generator_class = self.get_generator_class() generator = generator_class( url=options['url'], title=options['title'],