27 lines
999 B
Python
27 lines
999 B
Python
from django.core.checks import Error, Warning, register
|
|
|
|
|
|
@register(deploy=True)
|
|
def schema_check(app_configs, **kwargs):
|
|
""" Perform dummy generation and emit warnings/errors as part of Django's check framework """
|
|
from drf_spectacular.drainage import GENERATOR_STATS
|
|
from drf_spectacular.settings import spectacular_settings
|
|
|
|
if not spectacular_settings.ENABLE_DJANGO_DEPLOY_CHECK:
|
|
return []
|
|
|
|
errors = []
|
|
try:
|
|
with GENERATOR_STATS.silence():
|
|
spectacular_settings.DEFAULT_GENERATOR_CLASS().get_schema(request=None, public=True)
|
|
except Exception as exc:
|
|
errors.append(
|
|
Error(f'Schema generation threw exception "{exc}"', id='drf_spectacular.E001')
|
|
)
|
|
if GENERATOR_STATS:
|
|
for w in GENERATOR_STATS._warn_cache:
|
|
errors.append(Warning(w, id='drf_spectacular.W001'))
|
|
for e in GENERATOR_STATS._error_cache:
|
|
errors.append(Warning(e, id='drf_spectacular.W002'))
|
|
return errors
|