UCL / frrant

2 stars 0 forks source link

Cannot update introduction on production: Cannot assign "<Book: Unknown Book>": "FragmentLink.work" must be a "Work" instance #445

Open tcouch opened 3 months ago

tcouch commented 3 months ago

As a test user try to edit this antiquarian's introduction by clicking edit: https://www.ucl.ac.uk/history/frrant/antiquarian/49/

Introduction edit form fails to load and this error is generated:

Internal Server Error: /history/frrant/antiquarian/49/update/introduction/

ValueError at /history/frrant/antiquarian/49/update/introduction/ Cannot assign "": "FragmentLink.work" must be a "Work" instance.

Request Method: GET Request URL: https://frra-10-524.gtm.ucl.ac.uk/history/frrant/antiquarian/49/update/introduction/ Django Version: 3.2 Python Executable: /usr/local/bin/python Python Version: 3.8.6 Python Path: ['/app', '/usr/local/bin', '/usr/local/lib/python38.zip', '/usr/local/lib/python3.8', '/usr/local/lib/python3.8/lib-dynload', '/usr/local/lib/python3.8/site-packages', '/app/rard'] Server time: Wed, 20 Mar 2024 10:30:39 +0000 Installed Applications: ['collectfast', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.humanize', 'django.contrib.admin', 'django.forms', 'bootstrap4', 'simple_history', 'crispy_forms', 'rard.users.apps.UsersConfig', 'rard.research', 'anymail'] Installed Middleware: ['django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', '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.common.BrokenLinkEmailsMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'simple_history.middleware.HistoryRequestMiddleware']

Traceback (most recent call last): File "/usr/local/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/usr/local/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response response = wrapped_callback(request, *callback_args, callback_kwargs) File "/usr/local/lib/python3.8/contextlib.py", line 75, in inner return func(*args, *kwds) File "/usr/local/lib/python3.8/site-packages/django/views/generic/base.py", line 70, in view return self.dispatch(request, args, kwargs) File "/usr/local/lib/python3.8/site-packages/django/contrib/auth/mixins.py", line 71, in dispatch return super().dispatch(request, *args, kwargs) File "/app/rard/research/views/mixins.py", line 49, in dispatch return super().dispatch(request, *args, *kwargs) File "/usr/local/lib/python3.8/site-packages/django/contrib/auth/mixins.py", line 104, in dispatch return super().dispatch(request, args, kwargs) File "/usr/local/lib/python3.8/site-packages/django/views/generic/base.py", line 98, in dispatch return handler(request, *args, kwargs) File "/usr/local/lib/python3.8/site-packages/django/views/generic/edit.py", line 190, in get return super().get(request, *args, kwargs) File "/usr/local/lib/python3.8/site-packages/django/views/generic/edit.py", line 133, in get return self.render_to_response(self.get_context_data()) File "/app/rard/research/views/mixins.py", line 207, in get_context_data context = super().get_context_data(kwargs) File "/usr/local/lib/python3.8/site-packages/django/views/generic/edit.py", line 66, in get_context_data kwargs['form'] = self.get_form() File "/usr/local/lib/python3.8/site-packages/django/views/generic/edit.py", line 33, in get_form return form_class(*self.get_form_kwargs()) File "/app/rard/research/forms.py", line 65, in init self.instance.introduction.update_content_mentions() File "/app/rard/utils/basemodel.py", line 138, in update_editable_mentions self.save_without_historical_record() File "/usr/local/lib/python3.8/site-packages/simple_history/models.py", line 138, in save_without_historical_record ret = self.save(args, kwargs) File "/app/rard/research/models/text_object_field.py", line 77, in save obj.save() File "/app/rard/research/models/antiquarian.py", line 180, in save super().save(args, kwargs) File "/usr/local/lib/python3.8/site-packages/django/db/models/base.py", line 726, in save self.save_base(using=using, force_insert=force_insert, File "/usr/local/lib/python3.8/site-packages/django/db/models/base.py", line 774, in save_base post_save.send( File "/usr/local/lib/python3.8/site-packages/django/dispatch/dispatcher.py", line 180, in send return [ File "/usr/local/lib/python3.8/site-packages/django/dispatch/dispatcher.py", line 181, in (receiver, receiver(signal=self, sender=sender, named)) File "/app/rard/utils/decorators.py", line 22, in wrapper signal_handler(args, kwargs) File "/app/rard/research/models/antiquarian.py", line 418, in create_unknown_work instance.unknown_work.save() File "/app/rard/research/models/work.py", line 80, in save super().save(args, kwargs) File "/usr/local/lib/python3.8/site-packages/django/db/models/base.py", line 726, in save self.save_base(using=using, force_insert=force_insert, File "/usr/local/lib/python3.8/site-packages/django/db/models/base.py", line 774, in save_base post_save.send( File "/usr/local/lib/python3.8/site-packages/django/dispatch/dispatcher.py", line 180, in send return [ File "/usr/local/lib/python3.8/site-packages/django/dispatch/dispatcher.py", line 181, in (receiver, receiver(signal=self, sender=sender, named)) File "/app/rard/utils/decorators.py", line 22, in wrapper signal_handler(args, kwargs) File "/app/rard/research/models/work.py", line 317, in create_unknown_book collate_unknown(instance) File "/app/rard/utils/decorators.py", line 22, in wrapper signal_handler(*args, **kwargs) File "/app/rard/research/models/work.py", line 306, in collate_unknown collate_ub_links(instance, designated_unknown) File "/app/rard/utils/shared_functions.py", line 54, in collate_ub_links transfer_links(instance.antiquarian_work_fragmentlinks.all(), designated_unknown) File "/app/rard/utils/shared_functions.py", line 63, in transfer_links link.work = target_object File "/usr/local/lib/python3.8/site-packages/django/db/models/fields/related_descriptors.py", line 215, in set raise ValueError(

Exception Type: ValueError at /history/frrant/antiquarian/49/update/introduction/ Exception Value: Cannot assign "": "FragmentLink.work" must be a "Work" instance. Request information: USER: tester

GET: No GET data

POST: No POST data

FILES: No FILES data

COOKIES: csrftoken = 'TxDnNTtZI7Wi2ROU59gqajsTQEpGzE6uwV22yuwPlNhGpc3ssEa8IKfNR5kL1rPL' cookie-agreed-version = '1.0.0' cookie-agreed = '2' cookie-agreed-categories = '%5B%22necessary_cookies%22%2C%22analytics_and_customisation_cookies%22%2C%22advertising_cookies%22%5D' BIGipServer~WWW-WEBDOCS_02_429~pl_www-webdocs_02_429_d05_https = '4111735818.47873.0000' sessionid = 'y19x9dghb8gk9ww2mgcn3dqyuqy7u96a'

META: CSRF_COOKIE = 'TxDnNTtZI7Wi2ROU59gqajsTQEpGzE6uwV22yuwPlNhGpc3ssEa8IKfNR5kL1rPL' HTTP_ACCEPT = '/' HTTP_ACCEPT_ENCODING = 'gzip' HTTP_ACCEPT_LANGUAGE = 'en-US,en;q=0.5' HTTP_CDN_LOOP = 'cloudflare; subreqs=1' HTTP_CF_CONNECTING_IP = '2a0a:ef40:10a4:3801:d5d3:71ef:2ba8:41bd' HTTP_CF_EW_VIA = '15' HTTP_CF_IPCOUNTRY = 'GB' HTTP_CF_RAY = '8675073022cfdd23-LHR' HTTP_CF_VISITOR = '{"scheme":"https"}' HTTP_CF_WORKER = 'www.ucl.ac.uk' HTTP_CONNECTION = 'close' HTTP_COOKIE = 'csrftoken=TxDnNTtZI7Wi2ROU59gqajsTQEpGzE6uwV22yuwPlNhGpc3ssEa8IKfNR5kL1rPL; cookie-agreed-version=1.0.0; cookie-agreed=2; cookie-agreed-categories=%5B%22necessary_cookies%22%2C%22analytics_and_customisation_cookies%22%2C%22advertising_cookies%22%5D; BIGipServer~WWW-WEBDOCS_02_429~pl_www-webdocs_02_429_d05_https=4111735818.47873.0000; sessionid=y19x9dghb8gk9ww2mgcn3dqyuqy7u96a' HTTP_DNT = '1' HTTP_HOST = 'frra-10-524.gtm.ucl.ac.uk' HTTP_HX_CURRENT_URL = 'https://www.ucl.ac.uk/history/frrant/antiquarian/49/' HTTP_HX_REQUEST = 'true' HTTP_REFERER = 'https://www.ucl.ac.uk/history/frrant/antiquarian/49/' HTTP_SEC_FETCH_DEST = 'empty' HTTP_SEC_FETCH_MODE = 'cors' HTTP_SEC_FETCH_SITE = 'same-origin' HTTP_SEC_GPC = '1' HTTP_USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0' HTTP_VIA = '1.1 www.ucl.ac.uk' HTTP_X_CLIENT_IP = '172.71.178.96' HTTP_X_FORWARDED_FOR = '172.71.178.96, 10.55.0.1, 10.56.0.20' HTTP_X_FORWARDED_HOST = 'www.ucl.ac.uk' HTTP_X_FORWARDED_PROTO = 'https' HTTP_X_FORWARDED_SERVER = 'www.ucl.ac.uk' HTTP_X_REAL_IP = '10.56.0.20' PATH_INFO = '/history/frrant/antiquarian/49/update/introduction/' QUERY_STRING = '' RAW_URI = '/history/frrant/antiquarian/49/update/introduction/' REMOTE_ADDR = '172.18.0.6' REMOTE_PORT = '55032' REQUEST_METHOD = 'GET' SCRIPT_NAME = '' SERVER_NAME = '0.0.0.0' SERVER_PORT = '5000' SERVER_PROTOCOL = 'HTTP/1.0' SERVER_SOFTWARE = 'gunicorn/20.0.4' gunicorn.socket = <socket.socket fd=9, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('172.18.0.5', 5000), raddr=('172.18.0.6', 55032)> wsgi.errors = <gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7f0930768e50> wsgi.file_wrapper = <class 'gunicorn.http.wsgi.FileWrapper'> wsgi.input = <gunicorn.http.body.Body object at 0x7f09304f5e80> wsgi.input_terminated = True wsgi.multiprocess = False wsgi.multithread = False wsgi.run_once = False wsgi.url_scheme = 'http' wsgi.version = '(1, 0)'

Settings: Using settings module config.settings.production ABSOLUTE_URL_OVERRIDES = {} ADMINS = [('Amanda Ho-Lyn', 'a.ho-lyn@ucl.ac.uk'), ('Tom Couch', 't.couch@ucl.ac.uk')] ADMIN_URL = 'admin/' ALLOWED_HOSTS = ['.ucl.ac.uk', '144.82.250.194', '10.36.100.167', 'localhost', '0.0.0.0', 'iamahost'] ANYMAIL = {} APPEND_SLASH = True APPS_DIR = PosixPath('/app/rard') AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend'] AUTH_PASSWORD_VALIDATORS = '****' AUTH_USER_MODEL = 'users.User' BOOTSTRAP4 = {'success_css_class': 'success', 'required_css_class': 'required'} CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}} CACHE_MIDDLEWARE_ALIAS = 'default' CACHE_MIDDLEWARE_KEY_PREFIX = '****' CACHE_MIDDLEWARE_SECONDS = 600 COLLECTFAST_STRATEGY = 'collectfast.strategies.filesystem.FileSystemStrategy' CRISPY_TEMPLATE_PACK = 'bootstrap4' CSRF_COOKIE_AGE = 31449600 CSRF_COOKIE_DOMAIN = None CSRF_COOKIE_HTTPONLY = True CSRF_COOKIE_NAME = 'csrftoken' CSRF_COOKIE_PATH = '/' CSRF_COOKIE_SAMESITE = 'Lax' CSRF_COOKIE_SECURE = True CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure' CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN' CSRF_TRUSTED_ORIGINS = ['www.ucl.ac.uk'] CSRF_USE_SESSIONS = False DATABASES = {'default': {'NAME': 'rard', 'USER': 'research_software', 'PASSWORD': '****', 'HOST': 'postgres', 'PORT': 5432, 'ENGINE': 'django.db.backends.postgresql', 'ATOMIC_REQUESTS': True, 'CONN_MAX_AGE': 60, 'AUTOCOMMIT': True, 'OPTIONS': {}, 'TIME_ZONE': None, 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}}} DATABASE_ROUTERS = [] 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', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M'] 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 = False DEBUG_PROPAGATE_EXCEPTIONS = False DECIMAL_SEPARATOR = '.' DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' DEFAULT_CHARSET = 'utf-8' DEFAULT_EXCEPTION_REPORTER = 'django.views.debug.ExceptionReporter' DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter' DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage' DEFAULT_FROM_EMAIL = 'Republican Antiquarians Research Database [noreply@ucl.ac.uk](mailto:noreply@ucl.ac.uk)' DEFAULT_HASHING_ALGORITHM = 'sha256' DEFAULT_INDEX_TABLESPACE = '' DEFAULT_TABLESPACE = '' DISALLOWED_USER_AGENTS = [] DJANGO_APPS = ['django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.humanize', 'django.contrib.admin', 'django.forms'] EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_FROM = 'Republican Antiquarians Research Database [noreply@ucl.ac.uk](mailto:noreply@ucl.ac.uk)' EMAIL_HOST = 'isd-smtp.ucl.ac.uk' EMAIL_HOST_PASSWORD = '****' EMAIL_HOST_USER = '' EMAIL_PORT = 25 EMAIL_SSL_CERTFILE = None EMAIL_SSL_KEYFILE = '****' EMAIL_SUBJECT_PREFIX = '[Republican Antiquarians Research Database]' EMAIL_TIMEOUT = 5 EMAIL_USE_LOCALTIME = False EMAIL_USE_SSL = False EMAIL_USE_TLS = False 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 = 420 FILE_UPLOAD_TEMP_DIR = None FIRST_DAY_OF_WEEK = 0 FIXTURE_DIRS = "('/app/rard/fixtures',)" FORCE_SCRIPT_NAME = None FORMAT_MODULE_PATH = None FORM_RENDERER = 'django.forms.renderers.TemplatesSetting' IGNORABLE_404_URLS = [] INSTALLED_APPS = ['collectfast', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.humanize', 'django.contrib.admin', 'django.forms', 'bootstrap4', 'simple_history', 'crispy_forms', 'rard.users.apps.UsersConfig', 'rard.research', 'anymail'] INTERNAL_IPS = [] LANGUAGES = [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ar-dz', 'Algerian Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('ig', 'Igbo'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('ky', 'Kyrgyz'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('tg', 'Tajik'), ('th', 'Thai'), ('tk', 'Turkmen'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('uz', 'Uzbek'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')] LANGUAGES_BIDI = ['he', 'ar', 'ar-dz', 'fa', 'ur'] LANGUAGE_CODE = 'en-us' LANGUAGE_COOKIE_AGE = None LANGUAGE_COOKIE_DOMAIN = None LANGUAGE_COOKIE_HTTPONLY = False LANGUAGE_COOKIE_NAME = 'django_language' LANGUAGE_COOKIE_PATH = '/' LANGUAGE_COOKIE_SAMESITE = None LANGUAGE_COOKIE_SECURE = False LOCALE_PATHS = ['/app/locale'] LOCAL_APPS = ['rard.users.apps.UsersConfig', 'rard.research'] LOGGING = {'version': 1, 'disable_existing_loggers': False, 'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}}, 'formatters': {'verbose': {'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'}}, 'handlers': {'mail_admins': {'level': 'ERROR', 'filters': ['require_debug_false'], 'class': 'django.utils.log.AdminEmailHandler'}, 'console': {'level': 'DEBUG', 'class': 'logging.StreamHandler', 'formatter': 'verbose'}}, 'root': {'level': 'INFO', 'handlers': ['console']}, 'loggers': {'django.request': {'handlers': ['mail_admins'], 'level': 'ERROR', 'propagate': True}, 'django.security.DisallowedHost': {'level': 'ERROR', 'handlers': ['console', 'mail_admins'], 'propagate': True}}} LOGGING_CONFIG = 'logging.config.dictConfig' LOGIN_REDIRECT_URL = 'home' LOGIN_URL = 'login' LOGOUT_REDIRECT_URL = None MANAGERS = [('Amanda Ho-Lyn', 'a.ho-lyn@ucl.ac.uk'), ('Tom Couch', 't.couch@ucl.ac.uk')] MEDIA_ROOT = '/app/rard/media' MEDIA_URL = '/media/' MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage' MIDDLEWARE = ['django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', '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.common.BrokenLinkEmailsMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'simple_history.middleware.HistoryRequestMiddleware'] MIGRATION_MODULES = {'sites': 'rard.contrib.sites.migrations'} MONTH_DAY_FORMAT = 'F j' NUMBER_GROUPING = 0 PASSWORD_HASHERS = '****' PASSWORD_RESET_TIMEOUT = '****' PASSWORD_RESET_TIMEOUT_DAYS = '****' PREPEND_WWW = False PRODUCTION_INSTANCE = True READ_DOT_ENV_FILE = False ROOT_DIR = PosixPath('/app') ROOT_URLCONF = 'config.urls' SECRET_KEY = '****' SECURE_BROWSER_XSS_FILTER = True SECURE_CONTENT_TYPE_NOSNIFF = True SECURE_HSTS_INCLUDE_SUBDOMAINS = True SECURE_HSTS_PRELOAD = True SECURE_HSTS_SECONDS = 60 SECURE_PROXY_SSL_HEADER = "('HTTP_X_FORWARDED_PROTO', 'https')" SECURE_REDIRECT_EXEMPT = [] SECURE_REFERRER_POLICY = 'same-origin' SECURE_SSL_HOST = None SECURE_SSL_REDIRECT = True SERVER_EMAIL = 'Republican Antiquarians Research Database [noreply@ucl.ac.uk](mailto:noreply@ucl.ac.uk)' 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 = True 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 = 'config.settings.production' SHORT_DATETIME_FORMAT = 'm/d/Y P' SHORT_DATE_FORMAT = 'm/d/Y' SIGNING_BACKEND = 'django.core.signing.TimestampSigner' SILENCED_SYSTEM_CHECKS = [] SITE_ID = 1 STATICFILES_DIRS = ['/app/rard/static'] STATICFILES_FINDERS = ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder'] STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage' STATIC_ROOT = '/static' STATIC_URL = '/history/frrant/static/' TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['/app/rard/templates'], 'OPTIONS': {'loaders': [('django.template.loaders.cached.Loader', ['django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader'])], 'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.contrib.messages.context_processors.messages', 'rard.utils.context_processors.settings_context', 'rard.utils.context_processors.symbols_context']}}] TEST_NON_SERIALIZED_APPS = [] TEST_RUNNER = 'django.test.runner.DiscoverRunner' THIRD_PARTY_APPS = ['bootstrap4', 'simple_history', 'crispy_forms'] THOUSAND_SEPARATOR = ',' TIME_FORMAT = 'P' TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M'] TIME_ZONE = 'UTC' UPLOAD_FOLDER = 'uploads' UPLOAD_ROOT = '/app/uploads' URL_PREFIX = 'history/frrant/' USE_I18N = True USE_L10N = True USE_THOUSAND_SEPARATOR = False USE_TZ = True USE_X_FORWARDED_HOST = False USE_X_FORWARDED_PORT = False WILDCARD_MANY_CHAR = '*' WILDCARD_SINGLE_CHAR = '?' WSGI_APPLICATION = 'config.wsgi.application' X_FRAME_OPTIONS = 'DENY' YEAR_MONTH_FORMAT = 'F Y'

acholyn commented 2 months ago

related to #395 as the cause for this error