Files
GNX-WEB/backEnd/venv/lib/python3.12/site-packages/drf_yasg/app_settings.py
Iliyan Angelov 366f28677a update
2025-11-24 03:52:08 +02:00

143 lines
4.3 KiB
Python

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.DrfAPICompatInspector",
"drf_yasg.inspectors.CoreAPICompatInspector",
],
"DEFAULT_PAGINATOR_INSPECTORS": [
"drf_yasg.inspectors.DjangoRestResponsePagination",
"drf_yasg.inspectors.DrfAPICompatInspector",
"drf_yasg.inspectors.CoreAPICompatInspector",
],
"DEFAULT_SPEC_RENDERERS": [
"drf_yasg.renderers.SwaggerYAMLRenderer",
"drf_yasg.renderers.SwaggerJSONRenderer",
"drf_yasg.renderers.OpenAPIRenderer",
],
"EXCLUDED_MEDIA_TYPES": ["html"],
"DEFAULT_INFO": None,
"DEFAULT_API_URL": None,
"USE_SESSION_AUTH": True,
"USE_COMPAT_RENDERERS": getattr(settings, "SWAGGER_USE_COMPAT_RENDERERS", True),
"CSRF_COOKIE_NAME": settings.CSRF_COOKIE_NAME,
"CSRF_HEADER_NAME": settings.CSRF_HEADER_NAME,
"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,
"HIDE_DOWNLOAD_BUTTON": False,
}
IMPORT_STRINGS = [
"DEFAULT_GENERATOR_CLASS",
"DEFAULT_AUTO_SCHEMA_CLASS",
"DEFAULT_FIELD_INSPECTORS",
"DEFAULT_FILTER_INSPECTORS",
"DEFAULT_PAGINATOR_INSPECTORS",
"DEFAULT_SPEC_RENDERERS",
"DEFAULT_INFO",
]
class AppSettings:
"""
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,
)