diff --git a/src/drf_yasg/management/commands/generate_swagger.py b/src/drf_yasg/management/commands/generate_swagger.py index 18fd815..e4d3e8a 100644 --- a/src/drf_yasg/management/commands/generate_swagger.py +++ b/src/drf_yasg/management/commands/generate_swagger.py @@ -4,7 +4,7 @@ import os from collections import OrderedDict from importlib import import_module -from django.contrib.auth.models import User +from django.contrib.auth import get_user_model from django.core.exceptions import ImproperlyConfigured from django.core.management.base import BaseCommand from rest_framework.test import APIRequestFactory, force_authenticate @@ -61,7 +61,6 @@ class Command(BaseCommand): ) parser.add_argument( '--user', dest='user', - default='', help='Username of an existing user to use for mocked authentication. This option implies --mock-request.' ) parser.add_argument( @@ -122,7 +121,11 @@ class Command(BaseCommand): api_url = api_url or swagger_settings.DEFAULT_API_URL - user = User.objects.get(username=user) if user else None + if user: + # Only call get_user_model if --user was passed in order to + # avoid crashing if auth is not configured in the project + user = get_user_model().objects.get(username=user) + mock = mock or private or (user is not None) if mock and not api_url: raise ImproperlyConfigured( diff --git a/tests/test_management.py b/tests/test_management.py index 70bf6d9..7907c63 100644 --- a/tests/test_management.py +++ b/tests/test_management.py @@ -17,7 +17,7 @@ from drf_yasg.generators import OpenAPISchemaGenerator def call_generate_swagger(output_file='-', overwrite=False, format='', api_url='', - mock=False, user='', private=False, generator_class_name='', **kwargs): + mock=False, user=None, private=False, generator_class_name='', **kwargs): out = StringIO() call_command( 'generate_swagger', stdout=out,