123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- from django.conf import settings
- from rest_framework.settings import perform_import
- SWAGGER_DEFAULTS = {
- 'DEFAULT_GENERATOR_CLASS': 'drf_yasg.generators.OpenAPISchemaGenerator',
- 'DEFAULT_AUTO_SCHEMA_CLASS': 'drf_yasg.inspectors.SwaggerAutoSchema',
- 'DEFAULT_FIELD_INSPECTORS': [
- 'drf_yasg.inspectors.CamelCaseJSONFilter',
- 'drf_yasg.inspectors.RecursiveFieldInspector',
- 'drf_yasg.inspectors.ReferencingSerializerInspector',
- 'drf_yasg.inspectors.ChoiceFieldInspector',
- 'drf_yasg.inspectors.FileFieldInspector',
- 'drf_yasg.inspectors.DictFieldInspector',
- 'drf_yasg.inspectors.JSONFieldInspector',
- 'drf_yasg.inspectors.HiddenFieldInspector',
- 'drf_yasg.inspectors.RelatedFieldInspector',
- 'drf_yasg.inspectors.SerializerMethodFieldInspector',
- 'drf_yasg.inspectors.SimpleFieldInspector',
- 'drf_yasg.inspectors.StringDefaultFieldInspector',
- ],
- 'DEFAULT_FILTER_INSPECTORS': [
- 'drf_yasg.inspectors.CoreAPICompatInspector',
- ],
- 'DEFAULT_PAGINATOR_INSPECTORS': [
- 'drf_yasg.inspectors.DjangoRestResponsePagination',
- 'drf_yasg.inspectors.CoreAPICompatInspector',
- ],
- 'EXCLUDED_MEDIA_TYPES': ['html'],
- 'DEFAULT_INFO': None,
- 'DEFAULT_API_URL': None,
- 'USE_SESSION_AUTH': True,
- 'SECURITY_DEFINITIONS': {
- 'Basic': {
- 'type': 'basic'
- }
- },
- 'SECURITY_REQUIREMENTS': None,
- 'LOGIN_URL': getattr(settings, 'LOGIN_URL', None),
- 'LOGOUT_URL': '/accounts/logout/',
- 'SPEC_URL': None,
- 'VALIDATOR_URL': '',
- 'PERSIST_AUTH': False,
- 'REFETCH_SCHEMA_WITH_AUTH': False,
- 'REFETCH_SCHEMA_ON_LOGOUT': False,
- 'FETCH_SCHEMA_WITH_QUERY': True,
- 'OPERATIONS_SORTER': None,
- 'TAGS_SORTER': None,
- 'DOC_EXPANSION': 'list',
- 'DEEP_LINKING': False,
- 'SHOW_EXTENSIONS': True,
- 'DEFAULT_MODEL_RENDERING': 'model',
- 'DEFAULT_MODEL_DEPTH': 3,
- 'SHOW_COMMON_EXTENSIONS': True,
- 'OAUTH2_REDIRECT_URL': None,
- 'OAUTH2_CONFIG': {},
- 'SUPPORTED_SUBMIT_METHODS': [
- 'get',
- 'put',
- 'post',
- 'delete',
- 'options',
- 'head',
- 'patch',
- 'trace'
- ],
- 'DISPLAY_OPERATION_ID': True,
- }
- REDOC_DEFAULTS = {
- 'SPEC_URL': None,
- 'LAZY_RENDERING': False,
- 'HIDE_HOSTNAME': False,
- 'EXPAND_RESPONSES': 'all',
- 'PATH_IN_MIDDLE': False,
- 'NATIVE_SCROLLBARS': False,
- 'REQUIRED_PROPS_FIRST': False,
- 'FETCH_SCHEMA_WITH_QUERY': True,
- }
- IMPORT_STRINGS = [
- 'DEFAULT_GENERATOR_CLASS',
- 'DEFAULT_AUTO_SCHEMA_CLASS',
- 'DEFAULT_FIELD_INSPECTORS',
- 'DEFAULT_FILTER_INSPECTORS',
- 'DEFAULT_PAGINATOR_INSPECTORS',
- 'DEFAULT_INFO',
- ]
- class AppSettings(object):
- """
- Stolen from Django Rest Framework, removed caching for easier testing
- """
- def __init__(self, user_settings, defaults, import_strings=None):
- self._user_settings = user_settings
- self.defaults = defaults
- self.import_strings = import_strings or []
- @property
- def user_settings(self):
- return getattr(settings, self._user_settings, {})
- def __getattr__(self, attr):
- if attr not in self.defaults:
- raise AttributeError("Invalid setting: '%s'" % attr) # pragma: no cover
- try:
- # Check if present in user settings
- val = self.user_settings[attr]
- except KeyError:
- # Fall back to defaults
- val = self.defaults[attr]
- # Coerce import strings into classes
- if attr in self.import_strings:
- val = perform_import(val, attr)
- return val
- #:
- swagger_settings = AppSettings(
- user_settings='SWAGGER_SETTINGS',
- defaults=SWAGGER_DEFAULTS,
- import_strings=IMPORT_STRINGS,
- )
- #:
- redoc_settings = AppSettings(
- user_settings='REDOC_SETTINGS',
- defaults=REDOC_DEFAULTS,
- import_strings=IMPORT_STRINGS,
- )
|