Lesson documentations (and personal notes) are not unique [Ticket#75177]
Betreff: [Django] ERROR (EXTERNAL IP): Internal Server Error: /app/alsijil/lesson/2021/31/20725 Datum: 04.08.2021 12:04 Von: Nutzer Infoplan An: support@katharineum.de
Internal Server Error: /app/alsijil/lesson/2021/31/20725
MultipleObjectsReturned at /app/alsijil/lesson/2021/31/20725 get() returned more than one LessonDocumentation -- it returned 2!
Request Method: GET Request URL: [1] https://info.katharineum.de/app/alsijil/lesson/2021/31/20725?back=/app/alsijil/week/2021/31/teacher/1722/ Django Version: 3.2.4 Python Executable: /usr/bin/uwsgi-core Python Version: 3.9.2 Python Path: ['/srv/aleksis', '.', '', '/usr/lib/python39.zip', '/usr/lib/python3.9', '/usr/lib/python3.9/lib-dynload', '/srv/aleksis/envs/production/lib/python3.9/site-packages'] Server time: Wed, 04 Aug 2021 12:04:48 +0200 Installed Applications: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.sites', 'django.contrib.staticfiles', 'django.contrib.humanize', 'django_uwsgi', 'django_extensions', 'guardian', 'rules.apps.AutodiscoverRulesConfig', 'haystack', 'polymorphic', 'dbbackup', 'django_celery_beat', 'django_celery_results', 'celery_progress', 'health_check.contrib.celery', 'djcelery_email', 'celery_haystack', 'sass_processor', 'django_any_js', 'django_yarnpkg', 'django_tables2', 'maintenance_mode', 'menu_generator', 'reversion', 'phonenumber_field', 'debug_toolbar', 'django_prometheus', 'django_select2', 'hattori', 'templated_email', 'html2text', 'django_otp.plugins.otp_totp', 'django_otp.plugins.otp_static', 'django_otp', 'otp_yubikey', 'aleksis.core', 'allauth', 'allauth.account', 'allauth.socialaccount', 'health_check', 'health_check.db', 'health_check.cache', 'health_check.storage', 'health_check.contrib.psutil', 'health_check.contrib.migrations', 'dynamic_preferences', 'dynamic_preferences.users.apps.UserPreferencesConfig', 'impersonate', 'two_factor', 'material', 'ckeditor', 'ckeditor_uploader', 'django_js_reverse', 'colorfield', 'django_bleach', 'favicon', 'django_filters', 'oauth2_provider', 'rest_framework', 'feeds', 'aleksis.apps.csv_import.apps.CSVImportConfig', 'aleksis.apps.chronos.apps.ChronosConfig', 'aleksis.apps.untis.apps.UntisConfig', 'aleksis.apps.resint.apps.ResintConfig', 'aleksis.apps.dashboardfeeds.apps.DefaultConfig', 'aleksis.apps.fritak.apps.FritakConfig', 'aleksis.apps.ldap.apps.LDAPConfig', 'aleksis.apps.alsijil.apps.AlsijilConfig', 'aleksis.apps.hjelp.apps.HjelpConfig', 'cachalot', 'django_cleanup.apps.CleanupConfig'] Installed Middleware: ['django_prometheus.middleware.PrometheusBeforeMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'debug_toolbar.middleware.DebugToolbarMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.http.ConditionalGetMiddleware', 'django.contrib.sites.middleware.CurrentSiteMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django_otp.middleware.OTPMiddleware', 'impersonate.middleware.ImpersonateMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'maintenance_mode.middleware.MaintenanceModeMiddleware', 'aleksis.core.util.middlewares.EnsurePersonMiddleware', 'django_prometheus.middleware.PrometheusAfterMiddleware']
Traceback (most recent call last): File "/srv/aleksis/envs/production/lib/python3.9/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/srv/aleksis/envs/production/lib/python3.9/site-packages/django/core/handlers/base.py", line 181, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/srv/aleksis/envs/production/lib/python3.9/site-packages/newrelic/hooks/framework_django.py", line 562, in wrapper return wrapped(*args, **kwargs) File "/srv/aleksis/envs/production/lib/python3.9/site-packages/newrelic/api/function_trace.py", line 163, in literal_wrapper return wrapped(*args, **kwargs) File "/srv/aleksis/envs/production/lib/python3.9/site-packages/rules/contrib/views.py", line 221, in _wrapped_view return view_func(request, *args, **kwargs) File "/srv/aleksis/envs/production/lib/python3.9/site-packages/aleksis/apps/alsijil/views.py", line 198, in register_object lesson_documentation = register_object.get_or_create_lesson_documentation(wanted_week) File "/srv/aleksis/envs/production/lib/python3.9/site-packages/aleksis/apps/alsijil/model_extensions.py", line 237, in get_or_create_lesson_documentation lesson_documentation, __ = LessonDocumentation.objects.get_or_create( File "/srv/aleksis/envs/production/lib/python3.9/site-packages/django/db/models/manager.py", line 85, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) File "/srv/aleksis/envs/production/lib/python3.9/site-packages/newrelic/api/function_trace.py", line 163, in literal_wrapper return wrapped(*args, **kwargs) File "/srv/aleksis/envs/production/lib/python3.9/site-packages/django/db/models/query.py", line 581, in get_or_create return self.get(**kwargs), False File "/srv/aleksis/envs/production/lib/python3.9/site-packages/newrelic/api/function_trace.py", line 163, in literal_wrapper return wrapped(*args, **kwargs) File "/srv/aleksis/envs/production/lib/python3.9/site-packages/django/db/models/query.py", line 439, in get raise self.model.MultipleObjectsReturned(
Exception Type: MultipleObjectsReturned at /app/alsijil/lesson/2021/31/20725 Exception Value: get() returned more than one LessonDocumentation -- it returned 2! Request information: USER: arn
GET: back = '/app/alsijil/week/2021/31/teacher/1722/'
POST: No POST data
FILES: No FILES data
COOKIES: csrftoken = '2fADTzTOcjKBsYxfzeEiWKqHvceh89WLxvA4UCx5F8lb3DvDr6o40RIhEGLCkbli' sessionid = 'qhgcmd7rb179nurhr5x264o4b2ujkepp' _ga = 'GA1.2.1690313420.1603632329'
META: CONTENT_LENGTH = '' CONTENT_TYPE = '' CSRF_COOKIE = '2fADTzTOcjKBsYxfzeEiWKqHvceh89WLxvA4UCx5F8lb3DvDr6o40RIhEGLCkbli' DOCUMENT_ROOT = '/usr/share/nginx/html' HTTPS = 'on' HTTP_ACCEPT = 'text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8' HTTP_ACCEPT_ENCODING = 'gzip, deflate' HTTP_ACCEPT_LANGUAGE = 'de-de' HTTP_COOKIE = 'csrftoken=2fADTzTOcjKBsYxfzeEiWKqHvceh89WLxvA4UCx5F8lb3DvDr6o40RIhEGLCkbli; sessionid=qhgcmd7rb179nurhr5x264o4b2ujkepp; _ga=GA1.2.1690313420.1603632329' HTTP_HOST = '[2] info.katharineum.de' HTTP_REFERER = '[3] https://info.katharineum.de/app/alsijil/week/'; HTTP_USER_AGENT = 'Mozilla/5.0 (iPad; CPU OS 10_3_4 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.0 Mobile/14G61 Safari/602.1' PATH_INFO = '/app/alsijil/lesson/2021/31/20725' QUERY_STRING = 'back=/app/alsijil/week/2021/31/teacher/1722/' REMOTE_ADDR = '[4] 193.17.29.202' REMOTE_PORT = '47660' REQUEST_METHOD = 'GET' REQUEST_SCHEME = 'https' REQUEST_URI = '/app/alsijil/lesson/2021/31/20725?back=/app/alsijil/week/2021/31/teacher/1722/' SCRIPT_NAME = '' SERVER_NAME = '[5] info.katharineum.de' SERVER_PORT = '443' SERVER_PROTOCOL = 'HTTP/2.0' UWSGI_APPID = '[6] info.katharineum.de|' uwsgi.core = 0 uwsgi.node = b'[7] info.katharineum.de' uwsgi.version = b'[8] 2.0.19.1-debian' wsgi.errors = wsgi.file_wrapper = wsgi.input = wsgi.multiprocess = True wsgi.multithread = True wsgi.run_once = False wsgi.url_scheme = 'https' wsgi.version = '(1, 0)'
Settings: Using settings module aleksis.core.settings ABSOLUTE_URL_OVERRIDES = {} ACCOUNT_ADAPTER = 'aleksis.core.util.auth_helpers.OurAccountAdapter' ACCOUNT_AUTHENTICATION_METHOD = 'username_email' ACCOUNT_EMAIL_REQUIRED = True ACCOUNT_EMAIL_SUBJECT_PREFIX = '[AlekSIS] ' ACCOUNT_EMAIL_VERIFICATION = 'mandatory' ACCOUNT_FORMS = {'signup': 'aleksis.core.forms.AccountRegisterForm'} ACCOUNT_LOGIN_ATTEMPTS_LIMIT = 5 ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT = 300 ACCOUNT_SIGNUP_EMAIL_ENTER_TWICE = True ACCOUNT_UNIQUE_EMAIL = True ADMINS = [['Computer-AG', 'support@katharineum.de']] ALLOWED_HOSTS = ['[9] info.katharineum.de', 'localhost', '[10] 127.0.0.1', '[11] apps.katharineum.de', '[12] info-test.katharineum.de', '[13] 159.69.181.50', '[14] kath.mrstec.de', '[2a01:4f8:1c17:7bfc::1]'] ALTERNATIVE_LOGIN_VIEWS = [] ANONYMIZE_ENABLED = True ANONYMOUS_USER_NAME = None ANY_JS = {'materialize': {'js_url': '/static//materialize-css/dist/js/materialize.min.js'}, 'jQuery': {'js_url': '/static//jquery/dist/jquery.min.js'}, 'material-design-icons': {'css_url': '/static//material-design-icons-iconfont/dist/material-design-icons.css'}, 'paper-css': {'css_url': '/static//paper-css/paper.min.css'}, 'select2-materialize': {'css_url': '/static//select2-materialize/select2-materialize.css', 'js_url': '/static//select2-materialize/index.js'}, 'sortablejs': {'js_url': '/static//sortablejs/Sortable.min.js'}, 'jquery-sortablejs': {'js_url': '/static//jquery-sortablejs/jquery-sortable.js'}, 'broadcast-channel': {'js_url': '/static//broadcast-channel/dist/lib/browser.js'}, 'Roboto100': {'css_url': '/static//@fontsource/roboto/100.css'}, 'Roboto300': {'css_url': '/static//@fontsource/roboto/300.css'}, 'Roboto400': {'css_url': '/static//@fontsource/roboto/400.css'}, 'Roboto500': {'css_url': '/static//@fontsource/roboto/500.css'}, 'Roboto700': {'css_url': '/static//@fontsource/roboto/700.css'}, 'Roboto900': {'css_url': '/static//@fontsource/roboto/900.css'}} APPEND_SLASH = True AUTHENTICATION_BACKENDS = ['aleksis.core.util.ldap.LDAPBackend', 'django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend', 'rules.permissions.ObjectPermissionBackend'] AUTH_INITIAL_SUPERUSER = {'username': 'admin', 'password': '', 'email': 'root@example.com'} AUTH_LDAP_BIND_AS_AUTHENTICATING_USER = True AUTH_LDAP_BIND_DN = 'uid=readldap,ou=people,dc=skole,dc=skolelinux,dc=no' AUTH_LDAP_BIND_PASSWORD = '' AUTH_LDAP_GROUP_SEARCH = AUTH_LDAP_GROUP_TYPE = AUTH_LDAP_SERVER_URI = '[15] ldap://127.0.0.1'; AUTH_LDAP_SET_USABLE_PASSWORD = '' AUTH_LDAP_USER_ATTR_MAP = {'first_name': 'givenName', 'last_name': 'sn', 'email': 'mail'} AUTH_LDAP_USER_FLAGS_BY_GROUP = {} AUTH_LDAP_USER_SEARCH = AUTH_PASSWORD_VALIDATORS = '' AUTH_USER_MODEL = 'auth.User' BASE_DIR = '/srv/aleksis/envs/production/lib/python3.9/site-packages/aleksis' BASE_URL = '[16] https://info.katharineum.de'; BLEACH_ALLOWED_ATTRIBUTES = ['href', 'title', 'style'] BLEACH_ALLOWED_STYLES = ['font-family', 'font-weight', 'text-decoration', 'font-variant'] BLEACH_ALLOWED_TAGS = ['p', 'b', 'i', 'u', 'em', 'strong', 'a', 'div'] BLEACH_STRIP_COMMENTS = True BLEACH_STRIP_TAGS = True CACHALOT_DATABASES = {'default'} CACHALOT_TIMEOUT = 43200 CACHES = {'default': {'BACKEND': 'django_redis.cache.RedisCache', 'LOCATION': '[17] redis://localhost:6379/0';, 'OPTIONS': {'CLIENT_CLASS': 'django_redis.client.DefaultClient'}}} CACHE_MIDDLEWARE_ALIAS = 'default' CACHE_MIDDLEWARE_KEY_PREFIX = '' CACHE_MIDDLEWARE_SECONDS = 600 CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler' CELERY_BROKER_URL = '[18] redis://localhost/0'; CELERY_CACHE_BACKEND = 'django-cache' CELERY_HAYSTACK_COMMAND_AGE = None CELERY_HAYSTACK_COMMAND_APPS = [] CELERY_HAYSTACK_COMMAND_BATCH_SIZE = None CELERY_HAYSTACK_COMMAND_REMOVE = False CELERY_HAYSTACK_COMMAND_VERBOSITY = 1 CELERY_HAYSTACK_COMMAND_WORKERS = 0 CELERY_HAYSTACK_COUNTDOWN = 0 CELERY_HAYSTACK_DEFAULT_ALIAS = 'default' CELERY_HAYSTACK_DEFAULT_TASK = 'celery_haystack.tasks.CeleryHaystackSignalHandler' CELERY_HAYSTACK_IGNORE_RESULT = True CELERY_HAYSTACK_MAX_RETRIES = 1 CELERY_HAYSTACK_QUEUE = None CELERY_HAYSTACK_RETRY_DELAY = 300 CELERY_HAYSTACK_TRANSACTION_SAFE = True CELERY_RESULT_BACKEND = 'django-db' CKEDITOR_CONFIGS = {'default': {'toolbar_Basic': [['Source', '-', 'Bold', 'Italic']], 'toolbar_Full': [{'name': 'document', 'items': ['Source', '-', 'Save', 'NewPage', 'Preview', 'Print', '-', 'Templates']}, {'name': 'clipboard', 'items': ['Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo']}, {'name': 'editing', 'items': ['Find', 'Replace', '-', 'SelectAll']}, {'name': 'insert', 'items': ['Image', 'Table', 'HorizontalRule', 'Smiley', 'SpecialChar', 'PageBreak', 'Iframe']}, '/', {'name': 'basicstyles', 'items': ['Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'RemoveFormat']}, {'name': 'paragraph', 'items': ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote', 'CreateDiv', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', '-', 'BidiLtr', 'BidiRtl', 'Language']}, {'name': 'links', 'items': ['Link', 'Unlink', 'Anchor']}, '/', {'name': 'styles', 'items': ['Styles', 'Format', 'Font', 'FontSize']}, {'name': 'colors', 'items': ['TextColor', 'BGColor']}, {'name': 'tools', 'items': ['Maximize', 'ShowBlocks']}, {'name': 'about', 'items': ['About']}, {'name': 'customtools', 'items': ['Preview', 'Maximize']}], 'toolbar': 'Full', 'tabSpaces': 4, 'extraPlugins': 'uploadimage,div,autolink,autoembed,embedsemantic,autogrow,widget,lineutils,clipboard,dialog,dialogui,elementspath'}} CKEDITOR_UPLOAD_PATH = 'ckeditor_uploads/' 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 CUSTOM_AUTHENTICATION_BACKENDS = [] DATABASES = {'default': {'ENGINE': 'django_prometheus.db.backends.postgresql', 'NAME': 'aleksis_production', 'USER': 'aleksis', 'PASSWORD': '', 'HOST': '', 'PORT': '5432', 'CONN_MAX_AGE': 0, 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'OPTIONS': {}, 'TIME_ZONE': None, 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}}, 'untis': {'ENGINE': 'django_prometheus.db.backends.mysql', 'NAME': 'Untis', 'USER': 'untis-readonly', 'PASSWORD': '', 'HOST': '[19] 127.0.0.1', 'PORT': 3306, 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, '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'] DBBACKUP_CHECK_SECONDS = 90000 DBBACKUP_CLEANUP_DB = True DBBACKUP_CLEANUP_KEEP = 3 DBBACKUP_CLEANUP_KEEP_MEDIA = 3 DBBACKUP_CLEANUP_MEDIA = True DBBACKUP_COMPRESS_DB = True DBBACKUP_COMPRESS_MEDIA = True DBBACKUP_CONNECTOR_MAPPING = {'django_prometheus.db.backends.postgresql': 'dbbackup.db.postgresql.PgDumpConnector'} DBBACKUP_ENCRYPT_DB = False DBBACKUP_ENCRYPT_MEDIA = False DBBACKUP_GPG_RECIPIENT = None DBBACKUP_STORAGE = 'django.core.files.storage.FileSystemStorage' DBBACKUP_STORAGE_OPTIONS = {'location': '/srv/aleksis/backups/production/'} DEBUG = False DEBUG_PROPAGATE_EXCEPTIONS = False DEBUG_TOOLBAR_CONFIG = {'RENDER_PANELS': True, 'SHOW_COLLAPSED': True, 'JQUERY_URL': '', 'SHOW_TOOLBAR_CALLBACK': 'aleksis.core.util.core_helpers.dt_show_toolbar', 'DISABLE_PANELS': {}} DEBUG_TOOLBAR_PANELS = ['debug_toolbar.panels.versions.VersionsPanel', 'debug_toolbar.panels.timer.TimerPanel', 'debug_toolbar.panels.settings.SettingsPanel', 'debug_toolbar.panels.headers.HeadersPanel', 'debug_toolbar.panels.request.RequestPanel', 'debug_toolbar.panels.sql.SQLPanel', 'debug_toolbar.panels.cache.CachePanel', 'debug_toolbar.panels.staticfiles.StaticFilesPanel', 'debug_toolbar.panels.templates.TemplatesPanel', 'debug_toolbar.panels.signals.SignalsPanel', 'debug_toolbar.panels.logging.LoggingPanel', 'debug_toolbar.panels.profiling.ProfilingPanel', 'django_uwsgi.panels.UwsgiPanel', 'cachalot.panels.CachalotPanel'] 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_FAVICON_PATHS = {'pwa_icon': '/srv/aleksis/static/production/img/aleksis-icon.png', 'favicon': '/srv/aleksis/static/production/img/aleksis-icon.png'} DEFAULT_FILE_STORAGE = 'titofisto.TitofistoStorage' DEFAULT_FROM_EMAIL = 'infoplan@katharineum.de' DEFAULT_HASHING_ALGORITHM = 'sha256' DEFAULT_INDEX_TABLESPACE = '' DEFAULT_TABLESPACE = '' DIRS_FOR_DYNACONF = ['/etc/aleksis'] DISALLOWED_USER_AGENTS = [] DJANGO_EASY_AUDIT_WATCH_REQUEST_EVENTS = False DJANGO_TABLES2_TEMPLATE = 'django_tables2/materialize.html' DYNAMIC_PREFERENCES = {'REGISTRY_MODULE': 'preferences'} EMAIL_BACKEND = 'djcelery_email.backends.CeleryEmailBackend' 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 ENVVAR_PREFIX_FOR_DYNACONF = 'ALEKSIS' FEEDS_SERVER = '[20] http://info.katharineum.de'; FEEDS_USER_AGENT = 'django-feed-reader' 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 = [] FORCE_SCRIPT_NAME = None FORMAT_MODULE_PATH = None FORM_RENDERER = 'django.forms.renderers.DjangoTemplates' GUARDIAN_RAISE_403 = True HAYSTACK_CONNECTIONS = {'default': {'ENGINE': 'haystack_redis.RedisEngine', 'PATH': '[21] redis://localhost:6379/0';}} HAYSTACK_SEARCH_RESULTS_PER_PAGE = 10 HAYSTACK_SIGNAL_PROCESSOR = 'celery_haystack.signals.CelerySignalProcessor' HEALTH_CHECK = {'DISK_USAGE_MAX': 90, 'MEMORY_MIN': 500, 'WARNINGS_AS_ERRORS': True} IGNORABLE_404_URLS = [] IMPERSONATE = {'USE_HTTP_REFERER': True, 'REQUIRE_SUPERUSER': True, 'ALLOW_SUPERUSER': True} INSTALLED_APPS = ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.sites', 'django.contrib.staticfiles', 'django.contrib.humanize', 'django_uwsgi', 'django_extensions', 'guardian', 'rules.apps.AutodiscoverRulesConfig', 'haystack', 'polymorphic', 'dbbackup', 'django_celery_beat', 'django_celery_results', 'celery_progress', 'health_check.contrib.celery', 'djcelery_email', 'celery_haystack', 'sass_processor', 'django_any_js', 'django_yarnpkg', 'django_tables2', 'maintenance_mode', 'menu_generator', 'reversion', 'phonenumber_field', 'debug_toolbar', 'django_prometheus', 'django_select2', 'hattori', 'templated_email', 'html2text', 'django_otp.plugins.otp_totp', 'django_otp.plugins.otp_static', 'django_otp', 'otp_yubikey', 'aleksis.core', 'allauth', 'allauth.account', 'allauth.socialaccount', 'health_check', 'health_check.db', 'health_check.cache', 'health_check.storage', 'health_check.contrib.psutil', 'health_check.contrib.migrations', 'dynamic_preferences', 'dynamic_preferences.users.apps.UserPreferencesConfig', 'impersonate', 'two_factor', 'material', 'ckeditor', 'ckeditor_uploader', 'django_js_reverse', 'colorfield', 'django_bleach', 'favicon', 'django_filters', 'oauth2_provider', 'rest_framework', 'feeds', 'aleksis.apps.csv_import.apps.CSVImportConfig', 'aleksis.apps.chronos.apps.ChronosConfig', 'aleksis.apps.untis.apps.UntisConfig', 'aleksis.apps.resint.apps.ResintConfig', 'aleksis.apps.dashboardfeeds.apps.DefaultConfig', 'aleksis.apps.fritak.apps.FritakConfig', 'aleksis.apps.ldap.apps.LDAPConfig', 'aleksis.apps.alsijil.apps.AlsijilConfig', 'aleksis.apps.hjelp.apps.HjelpConfig', 'cachalot', 'django_cleanup.apps.CleanupConfig'] INTERNAL_IPS = ['[22] 127.0.0.1'] IN_PYTEST = False JS_ROOT = '/srv/aleksis/envs/production/lib/python3.9/site-packages/aleksis/node_modules/node_modules' JS_URL = '/static/' LANGUAGES = [('en', 'Englisch'), ('de', 'Deutsch')] LANGUAGES_BIDI = ['he', 'ar', 'ar-dz', 'fa', 'ur'] LANGUAGE_CODE = 'de' 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 = [] LOGGING = {'version': 1, 'disable_existing_loggers': False, 'handlers': {'console': {'class': 'logging.StreamHandler', 'formatter': 'verbose'}}, 'formatters': {'verbose': {'format': '%(levelname)s %(asctime)s %(module)s: %(message)s'}}, 'root': {'handlers': ['console'], 'level': 'INFO'}} LOGGING_CONFIG = 'logging.config.dictConfig' LOGIN_REDIRECT_URL = 'index' LOGIN_URL = 'two_factor:login' LOGOUT_REDIRECT_URL = 'index' MAINTENANCE_MODE = None MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS = 'ipware.ip.get_ip' MAINTENANCE_MODE_GET_TEMPLATE_CONTEXT = None MAINTENANCE_MODE_IGNORE_ADMIN_SITE = None MAINTENANCE_MODE_IGNORE_ANONYMOUS_USER = False MAINTENANCE_MODE_IGNORE_AUTHENTICATED_USER = False MAINTENANCE_MODE_IGNORE_IP_ADDRESSES = ['[23] 127.0.0.1'] MAINTENANCE_MODE_IGNORE_STAFF = False MAINTENANCE_MODE_IGNORE_SUPERUSER = True MAINTENANCE_MODE_IGNORE_TESTS = False MAINTENANCE_MODE_IGNORE_URLS = None MAINTENANCE_MODE_REDIRECT_URL = None MAINTENANCE_MODE_RETRY_AFTER = 3600 MAINTENANCE_MODE_STATE_BACKEND = 'maintenance_mode.backends.DefaultStorageBackend' MAINTENANCE_MODE_STATE_FILE_NAME = '/srv/aleksis/data/production/media/maintenance_mode_state.txt' MAINTENANCE_MODE_STATE_FILE_PATH = '/srv/aleksis/data/production/media/maintenance_mode_state.txt' MAINTENANCE_MODE_STATUS_CODE = 503 MAINTENANCE_MODE_TEMPLATE = '503.html' MANAGERS = [['Computer-AG', 'support@katharineum.de']] MEDIABACKUP_CHECK_SECONDS = 90000 MEDIA_ROOT = '/srv/aleksis/data/production/media/' MEDIA_URL = '/media/' MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage' MIDDLEWARE = ['django_prometheus.middleware.PrometheusBeforeMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'debug_toolbar.middleware.DebugToolbarMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.http.ConditionalGetMiddleware', 'django.contrib.sites.middleware.CurrentSiteMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django_otp.middleware.OTPMiddleware', 'impersonate.middleware.ImpersonateMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'maintenance_mode.middleware.MaintenanceModeMiddleware', 'aleksis.core.util.middlewares.EnsurePersonMiddleware', 'django_prometheus.middleware.PrometheusAfterMiddleware'] MIGRATION_MODULES = {} MONTH_DAY_FORMAT = 'F j' NODE_MODULES_ROOT = '/srv/aleksis/envs/production/lib/python3.9/site-packages/aleksis/node_modules' NUMBER_GROUPING = 0 OAUTH2_PROVIDER = {'SCOPES': {'read': 'Read anything the resource owner can read', 'write': 'Write anything the resource owner can write', 'openid': 'OpenID Connect scope', 'profile': 'Given name, family name, link to profile and picture if existing.', 'address': 'Full home postal address', 'email': 'E-Mail-Adresse', 'phone': 'Home and mobile phone'}, 'OAUTH2_VALIDATOR_CLASS': 'aleksis.core.util.auth_helpers.CustomOAuth2Validator', 'OIDC_ENABLED': True, 'OIDC_RSA_PRIVATE_KEY': ''} PASSWORD_HASHERS = '' PASSWORD_RESET_TIMEOUT = '' PASSWORD_RESET_TIMEOUT_DAYS = '' PREPEND_WWW = False PROMETHEUS_EXPORT_MIGRATIONS = False PROMETHEUS_METRICS_EXPORT_ADDRESS = None PROMETHEUS_METRICS_EXPORT_PORT = None PWA_ICONS_CONFIG = {'android': [192, 512], 'apple': [76, 114, 152, 180], 'apple_splash': [192], 'microsoft': [144]} REDIS_DB = 0 REDIS_HOST = 'localhost' REDIS_PASSWORD = '' REDIS_PORT = 6379 REDIS_URL = '[24] redis://localhost:6379/0'; REDIS_USER = '' REST_FRAMEWORK = {'DEFAULT_AUTHENTICATION_CLASSES': ['oauth2_provider.contrib.rest_framework.OAuth2Authentication']} ROOT_URLCONF = 'aleksis.core.urls' SASS_PROCESSOR_AUTO_INCLUDE = False SASS_PROCESSOR_CUSTOM_FUNCTIONS = {'get-colour': 'aleksis.core.util.sass_helpers.get_colour', 'get-preference': 'aleksis.core.util.sass_helpers.get_preference'} SASS_PROCESSOR_ENABLED = True SASS_PROCESSOR_INCLUDE_DIRS = ['/srv/aleksis/envs/production/lib/python3.9/site-packages/aleksis/node_modules/node_modules/materialize-css/sass/', '/srv/aleksis/static/production//materialize-css/sass/', '/srv/aleksis/static/production/'] SASS_PROCESSOR_STORAGE = 'titofisto.TitofistoStorage' SECRET_KEY = '' SECURE_BROWSER_XSS_FILTER = False SECURE_CONTENT_TYPE_NOSNIFF = True SECURE_HSTS_INCLUDE_SUBDOMAINS = False SECURE_HSTS_PRELOAD = False SECURE_HSTS_SECONDS = 0 SECURE_PROXY_SSL_HEADER = "('REQUEST_SCHEME', 'https')" SECURE_REDIRECT_EXEMPT = [] SECURE_REFERRER_POLICY = 'same-origin' SECURE_SSL_HOST = None SECURE_SSL_REDIRECT = False SELECT2_CACHE_BACKEND = 'default' SELECT2_CACHE_PREFIX = 'select2_' SELECT2_CSS = '/static//select2/dist/css/select2.min.css' SELECT2_I18N_AVAILABLE_LANGUAGES = ['ar', 'az', 'bg', 'ca', 'cs', 'da', 'de', 'el', 'en', 'es', 'et', 'eu', 'fa', 'fi', 'fr', 'gl', 'he', 'hi', 'hr', 'hu', 'id', 'is', 'it', 'ja', 'km', 'ko', 'lt', 'lv', 'mk', 'ms', 'nb', 'nl', 'pl', 'pt-BR', 'pt', 'ro', 'ru', 'sk', 'sr-Cyrl', 'sr', 'sv', 'th', 'tr', 'uk', 'vi', 'zh-CN', 'zh-TW'] SELECT2_I18N_PATH = '/static//select2/dist/js/i18n' SELECT2_JS = '/static//select2/dist/js/select2.min.js' SELECT2_LIB_VERSION = '4.0.12' SERVER_EMAIL = 'infoplan@katharineum.de' SERVICE_WORKER_PATH = '/srv/aleksis/static/production/js/serviceworker.js' 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.cache' SESSION_EXPIRE_AT_BROWSER_CLOSE = False SESSION_FILE_PATH = None SESSION_SAVE_EVERY_REQUEST = False SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer' SETTINGS_FILE_FOR_DYNACONF = ['/etc/aleksis/untis.toml', '/etc/aleksis/ldap.toml', '/etc/aleksis/production.toml'] SETTINGS_MODULE = 'aleksis.core.settings' SHORT_DATETIME_FORMAT = 'm/d/Y P' SHORT_DATE_FORMAT = 'm/d/Y' SIGNING_BACKEND = 'django.core.signing.TimestampSigner' SIGNUP_PASSWORD_ENTER_TWICE = '' SILENCED_SYSTEM_CHECKS = ['cachalot.W001', 'guardian.W001'] SITE_ID = 1 SOCIALACCOUNT_ADAPTER = 'aleksis.core.util.auth_helpers.OurSocialAccountAdapter' SOCIALACCOUNT_EMAIL_REQUIRED = False SOCIALACCOUNT_EMAIL_VERIFICATION = False STATICFILES_DIRS = [] STATICFILES_FINDERS = ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', 'django_yarnpkg.finders.NodeModulesFinder', 'sass_processor.finders.CssFinder'] STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage' STATIC_ROOT = '/srv/aleksis/static/production/' STATIC_URL = '/static/' TEMPLATED_EMAIL_AUTO_PLAIN = True TEMPLATED_EMAIL_BACKEND = 'templated_email.backends.vanilla_django' 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', 'maintenance_mode.context_processors.maintenance_mode', 'dynamic_preferences.processors.global_preferences', 'aleksis.core.util.core_helpers.custom_information_processor']}}] 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 = 'Europe/Berlin' TITOFISTO_TIMEOUT = 600 USE_I18N = True USE_L10N = True USE_THOUSAND_SEPARATOR = False USE_TZ = True USE_X_FORWARDED_HOST = False USE_X_FORWARDED_PORT = False UWSGI = {'module': 'aleksis.core.wsgi'} UWSGI_SERVE_MEDIA = False UWSGI_SERVE_STATIC = True WSGI_APPLICATION = 'aleksis.core.wsgi.application' X_FRAME_OPTIONS = 'DENY' YARN_INSTALLED_APPS = ['@fontsource/roboto', 'jquery', 'materialize-css', 'material-design-icons-iconfont', 'select2', 'select2-materialize', 'paper-css', 'jquery-sortablejs', 'sortablejs', 'broadcast-channel'] YEAR_MONTH_FORMAT = 'F Y' _AUTH_LDAP_GROUP_SETTINGS = [{'base': 'ou=group,dc=skole,dc=skolelinux,dc=no', 'filter': '(&(objectClass=posixGroup))'}] _AUTH_LDAP_USER_SETTINGS = [{'base': 'ou=Teachers,dc=skole,dc=skolelinux,dc=no', 'filter': '(&(objectClass=posixAccount)(uid=%(user)s))'}, {'base': 'ou=Students,dc=skole,dc=skolelinux,dc=no', 'filter': '(&(objectClass=posixAccount)(uid=%(user)s))'}, {'base': 'ou=MiscUsers,dc=skole,dc=skolelinux,dc=no', 'filter': '(&(objectClass=posixAccount)(uid=%(user)s))'}] _SOCIALACCOUNT_PROVIDERS = None
[1] https://info.katharineum.de/app/alsijil/lesson/2021/31/20725?back=/app/alsijil/week/2021/31/teacher/1722/ [2] http://info.katharineum.de [3] https://info.katharineum.de/app/alsijil/week/ [4] http://193.17.29.202 [5] http://info.katharineum.de [6] http://info.katharineum.de [7] http://info.katharineum.de [8] http://2.0.19.1 [9] http://info.katharineum.de [10] http://127.0.0.1 [11] http://apps.katharineum.de [12] http://info-test.katharineum.de [13] http://159.69.181.50 [14] http://kath.mrstec.de [15] ldap://127.0.0.1 [16] https://info.katharineum.de [17] redis://localhost:6379/0 [18] redis://localhost/0 [19] http://127.0.0.1 [20] http://info.katharineum.de [21] redis://localhost:6379/0 [22] http://127.0.0.1 [23] http://127.0.0.1 [24] redis://localhost:6379/0