AttributeError at /api-docs/ 'AutoSchema' object has no attribute 'get_link' Request Method: GET Request URL: https://chem-rest.pasteur.fr/api-docs/ Django Version: 2.2.13 Python Executable: /usr/local/bin/python3 Python Version: 3.6.7 Python Path: ['/code', '/code', '/usr/local/lib/python36.zip', '/usr/local/lib/python3.6', '/usr/local/lib/python3.6/lib-dynload', '/usr/local/lib/python3.6/site-packages'] Server time: Fri, 29 Mar 2024 14:34:57 +0000 Installed Applications: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django_crontab', 'rest_framework', 'rest_framework_datatables', 'rest_framework_swagger', 'bootstrapform', 'myapp', 'mytoolshed', 'datastorage', 'datamanagment', 'dataimporter', 'webapi', 'webui', 'django_extensions'] Installed Middleware: ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware'] Traceback: File "/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner 34. response = get_response(request) File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response 115. response = self.process_exception_by_middleware(e, request) File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response 113. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/usr/local/lib/python3.6/site-packages/django/views/decorators/csrf.py" in wrapped_view 54. return view_func(*args, **kwargs) File "/usr/local/lib/python3.6/site-packages/django/views/generic/base.py" in view 71. return self.dispatch(request, *args, **kwargs) File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py" in dispatch 505. response = self.handle_exception(exc) File "/usr/local/lib/python3.6/site-packages/rest_framework/schemas/views.py" in handle_exception 48. return super().handle_exception(exc) File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py" in handle_exception 465. self.raise_uncaught_exception(exc) File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py" in raise_uncaught_exception 476. raise exc File "/usr/local/lib/python3.6/site-packages/rest_framework/views.py" in dispatch 502. response = handler(request, *args, **kwargs) File "/usr/local/lib/python3.6/site-packages/rest_framework/schemas/views.py" in get 37. schema = self.schema_generator.get_schema(request, self.public) File "/usr/local/lib/python3.6/site-packages/rest_framework/schemas/coreapi.py" in get_schema 156. links = self.get_links(None if public else request) File "/usr/local/lib/python3.6/site-packages/rest_framework/schemas/coreapi.py" in get_links 143. link = view.schema.get_link(path, method, base_url=self.url) Exception Type: AttributeError at /api-docs/ Exception Value: 'AutoSchema' object has no attribute 'get_link' Request information: USER: AnonymousUser GET: No GET data POST: No POST data FILES: No FILES data COOKIES: No cookie data META: CONTEXT_DOCUMENT_ROOT = '/var/www/html' CONTEXT_PREFIX = '' DOCUMENT_ROOT = '/var/www/html' GATEWAY_INTERFACE = 'CGI/1.1' HTTP_ACCEPT = '*/*' HTTP_HOST = 'chem-rest.pasteur.fr' HTTP_USER_AGENT = 'claudebot' PATH_INFO = '/api-docs/' PATH_TRANSLATED = '/code/bdchem/wsgi.py/api-docs/' QUERY_STRING = '' REMOTE_ADDR = '157.99.101.112' REMOTE_PORT = '34496' REQUEST_METHOD = 'GET' REQUEST_SCHEME = 'https' REQUEST_URI = '/api-docs/' SCRIPT_FILENAME = '/code/bdchem/wsgi.py' SCRIPT_NAME = '' SERVER_ADDR = '172.18.0.7' SERVER_ADMIN = 'no-reply@localhost' SERVER_NAME = 'chem-rest.pasteur.fr' SERVER_PORT = '443' SERVER_PROTOCOL = 'HTTP/1.1' SERVER_SIGNATURE = '
Apache/2.4.25 (Debian) Server at chem-rest.pasteur.fr Port 443
\n' SERVER_SOFTWARE = 'Apache/2.4.25 (Debian)' apache.version = '(2, 4, 25)' mod_wsgi.application_group = '' mod_wsgi.callable_object = 'application' mod_wsgi.daemon_connects = '1' mod_wsgi.daemon_restarts = '0' mod_wsgi.daemon_start = '1711722897603585' mod_wsgi.enable_sendfile = '0' mod_wsgi.handler_script = '' mod_wsgi.ignore_activity = '0' mod_wsgi.listener_host = '' mod_wsgi.listener_port = '443' mod_wsgi.path_info = '/api-docs/' mod_wsgi.process_group = 'bdchem' mod_wsgi.queue_start = '1711722897603403' mod_wsgi.request_handler = 'wsgi-script' mod_wsgi.request_id = '6fpDixX6Nnc' mod_wsgi.request_start = '1711722897603305' mod_wsgi.script_name = '' mod_wsgi.script_reloading = '1' mod_wsgi.script_start = '1711722897606336' mod_wsgi.thread_id = 3 mod_wsgi.thread_requests = 0 mod_wsgi.total_requests = 5 mod_wsgi.version = '(4, 7, 1)' wsgi.errors = <_io.TextIOWrapper name='' encoding='utf-8'> wsgi.file_wrapper = '' wsgi.input = wsgi.input_terminated = True wsgi.multiprocess = False wsgi.multithread = True wsgi.run_once = False wsgi.url_scheme = 'https' wsgi.version = '(1, 0)' Settings: Using settings module bdchem.settings ABSOLUTE_URL_OVERRIDES = {} ADMINS = [] ALLOWED_HOSTS = ['chem-rest.pasteur.fr', 'hub23.hosting.pasteur.fr'] APPEND_SLASH = True AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend'] AUTH_PASSWORD_VALIDATORS = '********************' AUTH_USER_MODEL = 'auth.User' BASE_DIR = '/code' BINARY_LOCATION = '/binary' BROKER_CONNECTION_TIMEOUT = 10 BROKER_HEARTBEAT = '?heartbeat=30' BROKER_POOL_LIMIT = 1000 BROKER_URL = 'amqp://admin:HMxkDrzulJKHdVriRUATCYybyqqGOKsPEuh1pJuo@rabbit//?heartbeat=30' CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 'LOCATION': 'unique-snowflake', 'TIMEOUT': 604800, 'OPTIONS': {'MAX_ENTRIES': 1000}}} CACHE_MIDDLEWARE_ALIAS = 'default' CACHE_MIDDLEWARE_KEY_PREFIX = '********************' CACHE_MIDDLEWARE_SECONDS = 600 CELERYD_MAX_TASKS_PER_CHILD = 1000 CELERYD_PREFETCH_MULTIPLIER = 1 CELERY_ACKS_LATE = True CELERY_ALWAYS_EAGER = False CELERY_DEFAULT_QUEUE = 'default' CELERY_DISABLE_RATE_LIMITS = False CELERY_ENABLED = True CELERY_ENABLE_UTC = True CELERY_IGNORE_RESULT = False CELERY_QUEUES = '( -> default>,)' CELERY_RESULT_BACKEND = 'redis://redis:6379/0' CELERY_SEND_TASK_ERROR_EMAILS = False CELERY_TASK_PUBLISH_RETRY = True CELERY_TIMEZONE = 'UTC' CRONJOBS = [('0 4 * * *', 'django.core.management.call_command', ['clearsessions']), ('40 * * * *', 'datamanagment.crons.trigger_attempt_to_merge_molecule.run_task'), ('0 * * * *', 'datamanagment.crons.trigger_computation_for_candidate_molecule.run_task'), ('0 23 * * 0', 'datamanagment.crons.db_health_care.run_task')] CRONTAB_COMMAND_PREFIX = '. /root/env.sh ;' CRONTAB_COMMAND_SUFFIX = '>> /var/log/apache2/django-crontab.log 2>> /var/log/apache2/django-crontab.err' CRONTAB_LOCK_JOBS = True CSRF_COOKIE_AGE = 31449600 CSRF_COOKIE_DOMAIN = None CSRF_COOKIE_HTTPONLY = False CSRF_COOKIE_NAME = 'csrftoken' CSRF_COOKIE_PATH = '/' CSRF_COOKIE_SAMESITE = 'Lax' CSRF_COOKIE_SECURE = False CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure' CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN' CSRF_TRUSTED_ORIGINS = [] CSRF_USE_SESSIONS = False DATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql', 'NAME': 'postgres', 'USER': 'postgres', 'PASSWORD': '********************', 'HOST': 'db', 'PORT': 5432, 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'OPTIONS': {}, 'TIME_ZONE': None, 'TEST': {'CHARSET': None, 'COLLATION': None, 'NAME': None, 'MIRROR': None}}} DATABASES_HOST = 'db' DATABASE_ROUTERS = [] DATA_LOCATION = '/data' DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440 DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000 DATETIME_FORMAT = 'N j, Y, P' DATETIME_INPUT_FORMATS = ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y'] DATE_FORMAT = 'N j, Y' DATE_INPUT_FORMATS = ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y'] DEBUG = True DEBUG_PROPAGATE_EXCEPTIONS = False DECIMAL_SEPARATOR = '.' DEFAULT_CHARSET = 'utf-8' DEFAULT_CONTENT_TYPE = 'text/html' DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter' DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage' DEFAULT_FROM_EMAIL = 'webmaster@localhost' DEFAULT_INDEX_TABLESPACE = '' DEFAULT_TABLESPACE = '' DISALLOWED_USER_AGENTS = [] EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'localhost' EMAIL_HOST_PASSWORD = '********************' EMAIL_HOST_USER = '' EMAIL_PORT = 25 EMAIL_SSL_CERTFILE = None EMAIL_SSL_KEYFILE = '********************' EMAIL_SUBJECT_PREFIX = '[Django] ' EMAIL_TIMEOUT = None EMAIL_USE_LOCALTIME = False EMAIL_USE_SSL = False EMAIL_USE_TLS = False FILE_CHARSET = 'utf-8' FILE_UPLOAD_DIRECTORY_PERMISSIONS = None FILE_UPLOAD_HANDLERS = ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler'] FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440 FILE_UPLOAD_PERMISSIONS = None FILE_UPLOAD_TEMP_DIR = None FIRST_DAY_OF_WEEK = 0 FIXTURE_DIRS = [] FORCE_SCRIPT_NAME = None FORMAT_MODULE_PATH = None FORM_RENDERER = 'django.forms.renderers.DjangoTemplates' IGNORABLE_404_URLS = [] INSTALLED_APPS = ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django_crontab', 'rest_framework', 'rest_framework_datatables', 'rest_framework_swagger', 'bootstrapform', 'myapp', 'mytoolshed', 'datastorage', 'datamanagment', 'dataimporter', 'webapi', 'webui', 'django_extensions'] INTERNAL_IPS = [] LANGUAGES = [('en', 'English')] LANGUAGES_BIDI = ['he', 'ar', 'fa', 'ur'] LANGUAGE_CODE = 'en-us' LANGUAGE_COOKIE_AGE = None LANGUAGE_COOKIE_DOMAIN = None LANGUAGE_COOKIE_NAME = 'django_language' LANGUAGE_COOKIE_PATH = '/' LICENSE_LOCATION = '/license' LOCALE_PATHS = ['/code/locale/'] LOGGING = {} LOGGING_CONFIG = 'logging.config.dictConfig' LOGIN_REDIRECT_URL = '/accounts/profile/' LOGIN_URL = '/accounts/login/' LOGOUT_REDIRECT_URL = None MANAGERS = [] MEDIA_ROOT = '/code/.media' MEDIA_URL = '/media/' MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage' MIDDLEWARE = ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware'] MIGRATION_MODULES = {} MONTH_DAY_FORMAT = 'F j' NUMBER_GROUPING = 0 PASSWORD_HASHERS = '********************' PASSWORD_RESET_TIMEOUT_DAYS = '********************' PREPEND_WWW = False RABBIT_HOSTNAME = 'rabbit' REDIS_DB = 0 REDIS_HOST = 'redis' REDIS_PORT = 6379 REST_FRAMEWORK = {'DEFAULT_PARSER_CLASSES': ('rest_framework_yaml.parsers.YAMLParser',), 'DEFAULT_RENDERER_CLASSES': ('rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.BrowsableAPIRenderer', 'rest_framework_datatables_patched.renderers.DatatablesRenderer', 'rest_framework_csv.renderers.PaginatedCSVRenderer', 'rest_framework_yaml.renderers.YAMLRenderer'), 'DEFAULT_FILTER_BACKENDS': ('rest_framework_datatables.filters.DatatablesFilterBackend',), 'DEFAULT_PAGINATION_CLASS': 'rest_framework_datatables_patched.pagination.DatatablesLimitOffsetPagination', 'PAGE_SIZE': 10} ROOT_URLCONF = 'bdchem.urls' SECRET_KEY = '********************' SECURE_BROWSER_XSS_FILTER = False SECURE_CONTENT_TYPE_NOSNIFF = False SECURE_HSTS_INCLUDE_SUBDOMAINS = False SECURE_HSTS_PRELOAD = False SECURE_HSTS_SECONDS = 0 SECURE_PROXY_SSL_HEADER = None SECURE_REDIRECT_EXEMPT = [] SECURE_SSL_HOST = None SECURE_SSL_REDIRECT = False SERVER_EMAIL = 'root@localhost' SESSION_CACHE_ALIAS = 'default' SESSION_COOKIE_AGE = 1209600 SESSION_COOKIE_DOMAIN = None SESSION_COOKIE_HTTPONLY = True SESSION_COOKIE_NAME = 'sessionid' SESSION_COOKIE_PATH = '/' SESSION_COOKIE_SAMESITE = 'Lax' SESSION_COOKIE_SECURE = False SESSION_ENGINE = 'django.contrib.sessions.backends.db' SESSION_EXPIRE_AT_BROWSER_CLOSE = False SESSION_FILE_PATH = None SESSION_SAVE_EVERY_REQUEST = False SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer' SETTINGS_MODULE = 'bdchem.settings' SHORT_DATETIME_FORMAT = 'm/d/Y P' SHORT_DATE_FORMAT = 'm/d/Y' SIGNING_BACKEND = 'django.core.signing.TimestampSigner' SILENCED_SYSTEM_CHECKS = [] STATICFILES_DIRS = ['/code/static'] STATICFILES_FINDERS = ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder'] STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage' STATIC_ROOT = '/code/.static' STATIC_URL = '/static/' TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'webui.context_processors.preferences']}}] TEST_NON_SERIALIZED_APPS = [] TEST_RUNNER = 'django.test.runner.DiscoverRunner' THOUSAND_SEPARATOR = ',' TIME_FORMAT = 'P' TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M'] TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_THOUSAND_SEPARATOR = False USE_TZ = True USE_X_FORWARDED_HOST = False USE_X_FORWARDED_PORT = False WSGI_APPLICATION = 'bdchem.wsgi.application' X_FRAME_OPTIONS = 'SAMEORIGIN' YEAR_MONTH_FORMAT = 'F Y' You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code.