SECOND-BEST WORLDS
4.6
First-best or second-best: coping with realities
Do you remember our discussion of firm behaviour from the last chapter? There, we have assumed that our firms behave competitively, that is, they take prices as given and do not try to manipulate markets to their advantage.
Unfortunately, this is a rather optimistic view of most energy markets. In particular, for electricity we often have one (or a few) big suppliers that are able to influence prices. In this step, we will use this example to highlight a crucial difference in designing energy and environmental policies, whether you aim for a first-best or a second-best outcome.
Let’s start with a first-best case. For this, take the equations that you have used in the last chapter to describe firm behaviour in the Output Abatement Choice Model (OACM) model:
(1) $$\max\limits_{q_i,a_i\geq0}\enspace{p\cdot q_i}-c_i(q_i,a_i)-t\cdot e_i(q_i,a_i)$$
(2) $$p-\frac{∂c_i (q_i,a_i )}{∂q_i} -t\cdot \frac{∂e_i (q_i ,a_i )}{∂q_i}=0$$
(3) $$-\frac{∂c_i (q_i,a_i )}{∂a_i}-t\cdot\frac{∂e_i (q_i ,a_i )}{∂a_i}=0$$
Equation (1) represents each firm’s optimization problem and equations (2) and (3) are the necessary conditions for optimality resulting from this problem (excluding corner solutions).
These equations describe what a firm will do. However, how do you know whether this behaviour is good or bad from a societal perspective? In chapter 2, we have introduced the concept of social welfare to this end. In the OACM model with $$n$$ firms, social welfare can be written as
(4) $$\int_{0}^{\sum\limits_{i=1}^{n}{q_i} }{p(q)dq-\sum\limits_{i=1}^{n}{c_i(q_i,a_i)-D(\sum\limits_{i=1}^{n}{e_i(q_i,a_i)} )} } $$
The first term, $$\int_{0}^{\sum\limits_{i=1}^{n}{q_i} }{p(q)dq}$$, describes the consumer rent; that is, the benefit that consumer have from consuming electricity (the area below the demand curve). The second term, $$\sum\limits_{i=1}^{n}{c_i(q_i,a_i)}$$, equals the costs of producing electricity and the final term is the damage (measured by a damage function, $$D$$) caused by the sum of all emissions, $$\sum\limits_{i=1}^{n}{e_i(q_i,a_i)}$$.
A benevolent dictator would maximise equation (4) with regard to output and abatement for all firms. Doing this for firm $$i$$ (that is, differentiating with respect to $$q_i, a_i$$ and setting the result equal to zero) leads to the following necessary conditions:
(5) $$p-\frac{∂c_i (q_i,a_i )}{∂q_i} -\frac{∂D (q_i,a_i )}{∂e_i (q_i ,a_i )}\cdot \frac{∂e_i (q_i ,a_i )}{∂q_i} =0$$,
(6) $$-\frac{∂c_i (q_i,a_i )}{∂a_i} -\frac{∂D (q_i,a_i )}{∂e_i (q_i ,a_i )}\cdot \frac{∂e_i (q_i ,a_i )}{∂a_i} =0$$
Where $$D’$$ is the derivative of the damage function with regard to emissions.
If you compare (2) and (5) as well as (3) and (6), you see that these equations become equal, if you set $$t =\frac{∂D (q_i,a_i )}{∂e_i (q_i ,a_i )}$$. That is, there is a specific value of the emission tax that induces firms to produce exactly the right amount with exactly the right level of care (abatement). In fact, this is what is usually called a Pigouvian tax, which is a tax that internalises the emission externality by making each firm pay the social costs of the next unit of emissions (ie, $$\frac{∂D (q_i,a_i )}{∂e_i (q_i ,a_i )}$$ ) for all of its emissions. Note that this value is the same for all firms.
This calculation has several remarkable implications. First, you have two decision variables (production quantity and abatement) for each firm (altogether $$2 n$$ variables) but a single policy instrument (a mandatory tax) suffices to set incentives so that each firm behaves in a socially optimal way. Second, it implies that all firms should pay the same tax for each unit of emissions, which is a pretty strong policy implication (in fact, all firms in all sectors of an economy that emit the same pollutant should pay the same tax).
These are rather strong results for a comparatively simple model. Furthermore, they nicely highlight what constitutes a first-best solution: you can achieve the best possible outcome, social welfare is maximized. In fact, by implementing a policy, you can align the interests of all firms in the economy with societal objectives. If the tax is chosen correctly (ie, $$t = \frac{∂D (q_i,a_i )}{∂e_i (q_i ,a_i )}$$ ), the firms voluntarily do what is best for the society.
This holds in the benign situation where firms have no market power. Let us for a moment assume that this is not the case. Instead, assume that we only have a single firm, that is, a monopolist. What would this firm do?
A monopolist would maximize his profit taking into account the willingness of consumers to consume at different prices. Thus, we would integrate the inverse demand function, $$p(q)$$, which describes the price consumers are willing to pay for a given amount, $$q$$, into the monopolist’s decision problem (we drop the indices now, as there is only a single firm):
(7) $$\max\limits_{q,a\geq0}\enspace{p(q)\cdot q - c(q,a)-t\cdot e(q,a)}$$
(8) $$\frac{∂p(q)}{∂q}q+p(q)-\frac{∂c(q,a)}{∂q} -t\cdot \frac{∂e(q ,a)}{∂q} =0$$
(9) $$-\frac{∂c(q,a)}{∂a} -t\cdot\frac{∂e(q,a)}{∂a} =0$$
Again, you have described the maximisation problem in equation (7), and then you derived the necessary conditions from it. The term $$\frac{∂p(q)}{∂q}$$ denotes the derivative of the inverse demand function.
Comparing (2) and (8) as well as (3) and (9) shows that there is no value of the tax, $$t$$, that makes these equations identical. You can either choose to have the right amount of output (ie, make (2) and (8) identical) or the right amount of abatement (ie, make (3) and (9) identical); achieving both simultaneously is impossible.
This is typical for a second-best solution: you cannot achieve the best possible outcome but have to choose among less desirable ones. The reason is that the monopolist already produces too little to keep prices up. Thus, taxing the monopolist with the Pigouvian tax, $$t = \frac{∂D (q_i,a_i )}{∂e_i (q_i ,a_i )}$$, leads to a too strong drop in output. But a lower tax leads to too little abatement effort by the monopolist. Both of these outcomes reduce social welfare.
So, you have to compromise: setting a tax that is somewhat lower than the Pigouvian tax will usually be the best that you can do.
This is a typical situation in most real world problems. We are faced with more problems (market power and emissions, in your example) that we can cope with in terms of policy instruments (you only have a single instrument here). Therefore, we have to make a compromise and accept some welfare losses. It is still possible to increase welfare by introducing a tax but not up to the theoretical benchmark of the first-best solution.
Of course, this is a rather formal argument. What you should take out here is that there are two approaches to environmental and energy policy:
- You can try to achieve the best possible outcome. But to this end, you will typically need a rather complex policy (if you want, you might think about what additional policy instrument could be used to achieve the first-best outcome in the market power case). This is a first-best approach.
- Or, you can accept some welfare losses and make do with the insufficient policy instruments that you have. You still can do some good, but the scope is more limited. This is a second-best approach.
- Ausblenden »
- Toggle Theme
-
Geschichte
-
Versionen
Django 4.2.19 -
Zeit
CPU: 605.42ms (651.82ms) - Einstellungen
- Header
-
Anfrage
apply_cache -
SQL
0 Abfragen in 0.00 ms -
Statische Dateien
0 Dateien benutzt -
Templates
cachalot/panel.html -
Cache
1 Abfrage in 2.98ms -
Cachalot
Last invalidation: 11 Stunden, 4 Minuten -
Signale
110 Empfänger von 15 Signalen -
Umleitungen abfangen
-
Profiling
Versionen
Paket | Name | Version |
---|---|---|
Django | 4.2.19 | |
Python | 3.11.11 | |
allauth | Allauth | 65.4.1.final.0 |
cachalot | Cachalot | 2.6.3 |
crispy_bootstrap5 | Crispy_Bootstrap5 | 2024.10 |
crispy_forms | Crispy_Forms | 2.3 |
debug_toolbar | Debug Toolbar | 4.4.6 |
django_extensions | Django Extensions | 3.2.3 |
django_q | Django Q | 1.7.6 |
imagekit | Imagekit | 5.0.0 |
impersonate | Impersonate | 1.9.4 |
markdownx | Markdownx | 4.0.7 |
mozilla_django_oidc | Mozilla_Django_Oidc | 4.0.1 |
notifications | Notifications | 1.8.3 |
rosetta | Rosetta | 0.10.1 |
rules | Rules | 3.5.0.final.1 |
simple_history | Simple_History | 3.7.0 |
storages | Storages | 1.14.4 |
tos | Terms Of Service | 1.1.0 |
waffle | django-waffle | 4.1.0 |
Zeit
Ressourcenverwendung
Ressource | Wert |
---|---|
CPU-Zeit Benutzer | 491.750 ms |
CPU-Zeit System | 113.667 ms |
CPU-Zeit gesamt | 605.417 ms |
Verstrichene Zeit | 651.820 ms |
Kontextwechsel | 5887 freiwillig, 694 unfreiwillig |
Browserzeit
Timing-Attribut | Verlauf | Millisekunden seit Seitenaufruf (plus Dauer) |
---|
Einstellungen von config.settings.staging
Einstellung | Wert |
---|---|
ABSOLUTE_URL_OVERRIDES | {} |
ACCOUNT_ADAPTER | 'lms_base.adapter.AccountAdapter' |
ADMINS | (('admin', 'notifications-nmc@unibas.ch'),) |
ADMIN_URL | 'admin/' |
ALLOWED_HOSTS | ['*'] |
APPEND_SLASH | True |
AUTHENTICATION_BACKENDS | ('rules.permissions.ObjectPermissionBackend',
'lms_base.authentication.EDUIDAuthenticationBackend',
'django.contrib.auth.backends.ModelBackend') |
AUTH_PASSWORD_VALIDATORS | '********************' |
AUTH_USER_MODEL | 'users.User' |
BASE_DIR | '/app/project/config/../' |
CACHALOT_ENABLED | True |
CACHES | {'default': {'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://tales-redis:6379/1',
'OPTIONS': {'CLIENT_CLASS': 'django_redis.client.DefaultClient',
'IGNORE_EXCEPTIONS': True}}} |
CACHE_MIDDLEWARE_ALIAS | 'default' |
CACHE_MIDDLEWARE_KEY_PREFIX | '********************' |
CACHE_MIDDLEWARE_SECONDS | 600 |
CI_COMMIT_SHORT_SHA | '0809bd77' |
CI_COMMIT_TAG | '' |
CRISPY_ALLOWED_TEMPLATE_PACKS | 'bootstrap5' |
CRISPY_TEMPLATE_PACK | 'bootstrap5' |
CSRF_COOKIE_AGE | 31449600 |
CSRF_COOKIE_DOMAIN | None |
CSRF_COOKIE_HTTPONLY | False |
CSRF_COOKIE_MASKED | False |
CSRF_COOKIE_NAME | 'csrftoken' |
CSRF_COOKIE_PATH | '/' |
CSRF_COOKIE_SAMESITE | None |
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': {'ATOMIC_REQUESTS': False,
'AUTOCOMMIT': True,
'CONN_HEALTH_CHECKS': False,
'CONN_MAX_AGE': 0,
'ENGINE': 'django.db.backends.postgresql',
'HOST': 'tales-postgres',
'NAME': 'tptt',
'OPTIONS': {},
'PASSWORD': '********************',
'PORT': '5432',
'TEST': {'CHARSET': None,
'COLLATION': None,
'MIGRATE': True,
'MIRROR': None,
'NAME': None},
'TIME_ZONE': None,
'USER': 'tales_db_user'}} |
DATABASE_ROUTERS | [] |
DATA_UPLOAD_MAX_MEMORY_SIZE | 2621440 |
DATA_UPLOAD_MAX_NUMBER_FIELDS | 1000 |
DATA_UPLOAD_MAX_NUMBER_FILES | 100 |
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 | True |
DEBUG_PROPAGATE_EXCEPTIONS | False |
DEBUG_TOOLBAR_CONFIG | {'SHOW_TOOLBAR_CALLBACK': <function show_toolbar at 0x706cb92a1760>} |
DEBUG_TOOLBAR_PANELS | ['debug_toolbar.panels.history.HistoryPanel',
'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.staticfiles.StaticFilesPanel',
'debug_toolbar.panels.templates.TemplatesPanel',
'debug_toolbar.panels.cache.CachePanel',
'cachalot.panels.CachalotPanel',
'debug_toolbar.panels.signals.SignalsPanel',
'debug_toolbar.panels.logging.LoggingPanel',
'debug_toolbar.panels.redirects.RedirectsPanel',
'debug_toolbar.panels.profiling.ProfilingPanel'] |
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 | 'contact-nmc@unibas.ch' |
DEFAULT_INDEX_TABLESPACE | '' |
DEFAULT_TABLESPACE | '' |
DEPLOY_ENV | 'staging' |
DISALLOWED_USER_AGENTS | [] |
DJANGO_APPS | ('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.forms',
'django.contrib.sites',
'django.contrib.flatpages',
'modeltranslation',
'django.contrib.admin',
'django.contrib.redirects',
'django.contrib.sitemaps',
'django.contrib.humanize') |
DJANGO_NOTIFICATIONS_CONFIG | {'USE_JSONFIELD': True} |
EMAIL_BACKEND | 'django.core.mail.backends.smtp.EmailBackend' |
EMAIL_HOST | 'smtp.unibas.ch' |
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_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.TemplatesSetting' |
IGNORABLE_404_URLS | [] |
IMAGEKIT_CACHEFILE_DIR | 'CACHE/images' |
IMAGEKIT_CACHEFILE_NAMER | 'imagekit.cachefiles.namers.hash' |
IMAGEKIT_CACHE_BACKEND | 'default' |
IMAGEKIT_CACHE_PREFIX | 'imagekit:' |
IMAGEKIT_CACHE_TIMEOUT | 300 |
IMAGEKIT_DEFAULT_CACHEFILE_BACKEND | 'imagekit.cachefiles.backends.Simple' |
IMAGEKIT_DEFAULT_CACHEFILE_STRATEGY | 'imagekit.cachefiles.strategies.JustInTime' |
IMAGEKIT_DEFAULT_FILE_STORAGE | 'default' |
IMAGEKIT_SPEC_CACHEFILE_NAMER | 'imagekit.cachefiles.namers.source_name_as_path' |
IMAGEKIT_USE_MEMCACHED_SAFE_CACHE_KEY | '********************' |
INSTALLED_APPS | ('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.forms',
'django.contrib.sites',
'django.contrib.flatpages',
'modeltranslation',
'django.contrib.admin',
'django.contrib.redirects',
'django.contrib.sitemaps',
'django.contrib.humanize',
'simple_history',
'crispy_forms',
'crispy_bootstrap5',
'allauth',
'allauth.account',
'allauth.socialaccount',
'mozilla_django_oidc',
'django_extensions',
'markdownx',
'rules.apps.AutodiscoverRulesConfig',
'imagekit',
'waffle',
'django_htmx',
'cachalot',
'corsheaders',
'tos',
'tos_i18n',
'impersonate',
'rosetta',
'django_q',
'notifications',
'link_check',
'users.apps.UsersConfig',
'lms_base',
'lms_tales.apps.LMSTalesConfig',
'lms_comments.apps.LMSCommentsConfig',
'lms_static_texts.apps.LMSStaticTextsConfig',
'tags.apps.TagsConfig',
'startpage.apps.StartpageConfig',
'search.apps.SearchConfig',
'utils.apps.UtilsConfig',
'dashboard.apps.DashboardConfig',
'reporting.apps.ReportingConfig',
'lms_notifications.apps.LMSNotificationsConfig',
'lms_roles.apps.LMSRolesConfig',
'storages',
'debug_toolbar') |
INTERNAL_IPS | ['127.0.0.1'] |
LANGUAGES | (('de', 'Deutsch'), ('en', 'Englisch'), ('fr', 'Franzoesisch')) |
LANGUAGES_BIDI | ['he', 'ar', 'ar-dz', 'ckb', '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 | ['/app/project/config/../locale'] |
LOCAL_APPS | ('users.apps.UsersConfig',
'lms_base',
'lms_tales.apps.LMSTalesConfig',
'lms_comments.apps.LMSCommentsConfig',
'lms_static_texts.apps.LMSStaticTextsConfig',
'tags.apps.TagsConfig',
'startpage.apps.StartpageConfig',
'search.apps.SearchConfig',
'utils.apps.UtilsConfig',
'dashboard.apps.DashboardConfig',
'reporting.apps.ReportingConfig',
'lms_notifications.apps.LMSNotificationsConfig',
'lms_roles.apps.LMSRolesConfig') |
LOGGING | {'disable_existing_loggers': False,
'formatters': {'verbose': {'format': '{asctime} {levelname} {name} {module} '
'{message}',
'style': '{'}},
'handlers': {'console': {'class': 'logging.StreamHandler',
'formatter': 'verbose'},
'mail_admins': {'class': 'django.utils.log.AdminEmailHandler',
'include_html': True,
'level': 'ERROR'}},
'loggers': {'django': {'handlers': ['console', 'mail_admins'],
'level': 'WARNING',
'propagate': True},
'django.request': {'handlers': ['console', 'mail_admins'],
'level': 'ERROR',
'propagate': False},
'django.security': {'handlers': ['console', 'mail_admins'],
'level': 'ERROR',
'propagate': False},
'fontTools': {'handlers': ['console'], 'level': 'ERROR'},
'tales': {'handlers': ['console'], 'level': 'INFO'},
'weasyprint': {'handlers': ['console'], 'level': 'ERROR'}},
'root': {'handlers': ['console'], 'level': 'WARNING'},
'version': 1} |
LOGGING_CONFIG | 'logging.config.dictConfig' |
LOGIN_REDIRECT_URL | '/' |
LOGIN_URL | 'account_login' |
LOGOUT_REDIRECT_URL | '/' |
MANAGERS | [] |
MARKDOWNX_EDITOR_RESIZABLE | True |
MARKDOWNX_IMAGE_MAX_SIZE | {'quality': 90, 'size': (1920, 5600)} |
MARKDOWNX_MARKDOWNIFY_FUNCTION | 'lms_base.utils.markdownify' |
MARKDOWNX_MARKDOWN_EXTENSIONS | ['markdown.extensions.extra',
'markdown.extensions.smarty',
'markdown.extensions.codehilite',
'markdown.extensions.fenced_code',
'markdown.extensions.attr_list',
'markdown.extensions.toc',
'utils.markdown_extensions',
'python_markdown_oembed_extension'] |
MARKDOWNX_MEDIA_PATH | 'markdownx/' |
MARKDOWNX_UPLOAD_URLS_PATH | '/markdownx/upload/' |
MARKDOWNX_URLS_PATH | '/markdownx/markdownify/' |
MEDIA_ROOT | '/app/project/media' |
MEDIA_URL | '/media/' |
MESSAGE_REAPPEAR_TIME | 600 |
MESSAGE_STORAGE | 'django.contrib.messages.storage.fallback.FallbackStorage' |
MIDDLEWARE | ['corsheaders.middleware.CorsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'lms_tales.middleware.SetLocaleFoundInUserSettings',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'allauth.account.middleware.AccountMiddleware',
'impersonate.middleware.ImpersonateMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'simple_history.middleware.HistoryRequestMiddleware',
'django.contrib.redirects.middleware.RedirectFallbackMiddleware',
'waffle.middleware.WaffleMiddleware',
'django_htmx.middleware.HtmxMiddleware',
'lms_tales.middleware.TalesUserAgreementMiddleware',
'lms_tales.middleware.ScheduledMessagesMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware'] |
MIGRATION_MODULES | {'tos': 'lms_tales.migrate.tos'} |
MODELTRANSLATION_CUSTOM_FIELDS | ('JSONField',) |
MODELTRANSLATION_DEFAULT_LANGUAGE | 'de' |
MODELTRANSLATION_FALLBACK_LANGUAGES | ('de', 'en', 'fr') |
MONTH_DAY_FORMAT | 'F j' |
NOTIFICATIONS_NOTIFICATION_MODEL | 'notifications.Notification' |
NUMBER_GROUPING | 0 |
OIDC_OP_AUTHORIZATION_ENDPOINT | 'https://login.test.eduid.ch/idp/profile/oidc/authorize' |
OIDC_OP_JWKS_ENDPOINT | 'https://login.test.eduid.ch/idp/profile/oidc/keyset' |
OIDC_OP_TOKEN_ENDPOINT | '********************' |
OIDC_OP_USER_ENDPOINT | 'https://login.test.eduid.ch/idp/profile/oidc/userinfo' |
OIDC_RP_CLIENT_ID | 'unibas-tales' |
OIDC_RP_CLIENT_SECRET | '********************' |
OIDC_RP_SCOPES | 'openid email profile https://login.eduid.ch/authz/User.Read' |
OIDC_RP_SIGN_ALGO | 'RS256' |
OIDC_TOKEN_USE_BASIC_AUTH | '********************' |
PASSWORD_HASHERS | '********************' |
PASSWORD_RESET_TIMEOUT | '********************' |
PREPEND_WWW | False |
PROJECT_DIR | '/app/project/config/../' |
Q_CLUSTER | {'catch_up': False,
'django_redis': 'default',
'name': 'QCluster',
'retry': 600,
'timeout': 500,
'workers': 4} |
RELEASE_NAME | '' |
REQUIRE_SUPERUSER | True |
ROOT_URLCONF | 'config.urls' |
ROSETTA_MESSAGES_SOURCE_LANGUAGE_CODE | 'de' |
ROSETTA_MESSAGES_SOURCE_LANGUAGE_NAME | 'Deutsch' |
ROSETTA_SHOW_AT_ADMIN_PANEL | 'True' |
SECRET_KEY | '********************' |
SECRET_KEY_FALLBACKS | '********************' |
SECURE_CONTENT_TYPE_NOSNIFF | True |
SECURE_CROSS_ORIGIN_OPENER_POLICY | 'same-origin' |
SECURE_HSTS_INCLUDE_SUBDOMAINS | False |
SECURE_HSTS_PRELOAD | False |
SECURE_HSTS_SECONDS | 0 |
SECURE_PROXY_SSL_HEADER | ('HTTP_X_FORWARDED_PROTO', 'https') |
SECURE_REDIRECT_EXEMPT | [] |
SECURE_REFERRER_POLICY | 'same-origin' |
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 | None |
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_MODULE | 'config.settings.staging' |
SHORT_DATETIME_FORMAT | 'm/d/Y P' |
SHORT_DATE_FORMAT | 'm/d/Y' |
SIGNING_BACKEND | 'django.core.signing.TimestampSigner' |
SILENCED_SYSTEM_CHECKS | [] |
SITE_DOMAIN | 'https://nmc-tales-staging.nmc.unibas.ch/' |
SITE_ID | 1 |
SLACK_WEBHOOK | 'https://hooks.slack.com/services/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' |
STAGING_EMAIL_RECIPIENTS | ['notifications-nmc@unibas.ch'] |
STATICFILES_DIRS | ['/app/project/config/../static'] |
STATICFILES_FINDERS | ('django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder') |
STATICFILES_STORAGE | 'django.contrib.staticfiles.storage.StaticFilesStorage' |
STATIC_ROOT | '/app/project/config/../../staticfiles' |
STATIC_URL | '/static/' |
STORAGES | {'default': {'BACKEND': 'django.core.files.storage.FileSystemStorage'},
'staticfiles': {'BACKEND': 'django.contrib.staticfiles.storage.StaticFilesStorage'}} |
TALES_BASE_URL | 'https://tales.nmc.unibas.ch' |
TALES_VERSION | 'dev' |
TEMPLATES | [{'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ['/app/project/config/../templates',
'/usr/local/lib/python3.11/site-packages/django/forms/templates'],
'OPTIONS': {'builtins': ['django.templatetags.i18n',
'django.templatetags.static'],
'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',
'utils.context_processors.ci_info'],
'debug': False,
'loaders': ['django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader']}}] |
TEST_NON_SERIALIZED_APPS | [] |
TEST_RUNNER | 'django.test.runner.DiscoverRunner' |
THIRD_PARTY_APPS | ('debug_toolbar',) |
THOUSAND_SEPARATOR | ',' |
TIME_FORMAT | 'P' |
TIME_INPUT_FORMATS | ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M'] |
TIME_ZONE | 'Europe/Zurich' |
USER_DEACTIVATION_AFTER_DAYS | 730 |
USER_DELETION_AFTER_DAYS | 912 |
USE_DEPRECATED_PYTZ | False |
USE_I18N | True |
USE_L10N | True |
USE_THOUSAND_SEPARATOR | False |
USE_TZ | True |
USE_X_FORWARDED_HOST | True |
USE_X_FORWARDED_PORT | False |
VIEW_CACHE_TTL | 600 |
WAFFLE_LOG_MISSING_FLAGS | 30 |
WAFFLE_LOG_MISSING_SAMPLES | 30 |
WAFFLE_LOG_MISSING_SWITCHES | 30 |
WSGI_APPLICATION | 'config.wsgi.application' |
X_FRAME_OPTIONS | 'DENY' |
YEAR_MONTH_FORMAT | 'F Y' |
Header
Anfrage-Header
Schlüssel | Wert |
---|---|
Accept | */* |
Accept-Encoding | gzip, br, zstd, deflate |
Cookie | => see Request panel |
Host | nmc-tales-staging.nmc.unibas.ch |
User-Agent | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com) |
X-Forwarded-For | 18.190.253.133 |
X-Forwarded-Host | nmc-tales-staging.nmc.unibas.ch |
X-Forwarded-Proto | https |
Antwort-Header
Schlüssel | Wert |
---|---|
Content-Type | text/html; charset=utf-8 |
WSGI-Umgebung
Da sich die WSGI-Umgebung von der Umgebung des Servers ableitet, wird nur eine notwendige Teilmenge dargestellt.
Schlüssel | Wert |
---|---|
PATH_INFO | /de/exploring-possible-futures-44/second-best-worlds-228/first-best-or-second-best-coping-with-realities-1293 |
QUERY_STRING | |
REMOTE_ADDR | 18.190.253.133 |
REMOTE_HOST | 18.190.253.133 |
REQUEST_METHOD | GET |
SCRIPT_NAME | |
SERVER_NAME | 172.19.0.5 |
SERVER_PORT | 8000 |
Anfrage
View-Informationen
View-Funktion | Argumente | Schlüsselwort-Argumente | URL-Name |
---|---|---|---|
utils.decorators.cache_per_user.<locals>.decorator.<locals>.apply_cache |
() |
{'chapter_pk': 228,
'chapter_slug': 'second-best-worlds',
'course_pk': 44,
'course_slug': 'exploring-possible-futures',
'pk': 1293,
'slug': 'first-best-or-second-best-coping-with-realities'} |
tales:step |
Cookies
Variable | Wert |
---|---|
'csrftoken' |
'fzomLpm8q9CjK33S3LN7cbW43OmutW3h' |
'sessionid' |
'icxmzs13owphnjzojfwf48z2d3xiv1bx' |
Sitzungsdaten
Variable | Wert |
---|---|
'oidc_login_next' |
'/de/allergies-when-the-immune-system-backfires-41/' |
'oidc_states' |
{'PyyuSJ7xEpw6dfqSjWDOiP60bztNSMOR': {'added_on': 1743798879.2305927,
'code_verifier': None,
'nonce': 'gORpLssBpABSO386wpmxtNlx551xzNF7'}} |
Keine GET-Daten
Keine POST-Daten
SQL-Abfragen von 0 Verbindungen
Es wurde keine SQL-Abfrage während dieses Vorgangs aufgezeichnet.
Statische Dateien (273 gefunden, 0 benutzt)
Pfad mit statischen Dateien
- /app/project/static
Apps mit statischen Dateien
- modeltranslation
- django.contrib.admin
- django_extensions
- markdownx
- django_htmx
- rosetta
- notifications
- debug_toolbar
Statische Dateien
-
django.contrib.staticfiles.finders.FileSystemFinder (123 Dateien)
Pfad | Ort |
---|---|
robots.txt | /app/project/static/robots.txt |
alphorn_07.jpg | /app/project/static/alphorn_07.jpg |
browserconfig.xml | /app/project/static/browserconfig.xml |
alphorn_11.jpg | /app/project/static/alphorn_11.jpg |
lottie/optimized_tales_banner2.mp4 | /app/project/static/lottie/optimized_tales_banner2.mp4 |
lottie/optimized_tales_banner_av1.webm | /app/project/static/lottie/optimized_tales_banner_av1.webm |
lottie/tales_banner3.mp4 | /app/project/static/lottie/tales_banner3.mp4 |
lottie/optimized_tales_banner3.webm | /app/project/static/lottie/optimized_tales_banner3.webm |
lottie/optimized_tales_banner2.webm | /app/project/static/lottie/optimized_tales_banner2.webm |
lottie/tales_banner.json | /app/project/static/lottie/tales_banner.json |
lottie/optimized_tales_banner3.mp4 | /app/project/static/lottie/optimized_tales_banner3.mp4 |
lottie/optimized_tales_banner_av1.mp4 | /app/project/static/lottie/optimized_tales_banner_av1.mp4 |
lottie/optimized_tales_banner.mp4 | /app/project/static/lottie/optimized_tales_banner.mp4 |
lottie/tales_banner2.mp4 | /app/project/static/lottie/tales_banner2.mp4 |
lms_base/font/nmc.woff | /app/project/static/lms_base/font/nmc.woff |
lms_base/font/icon-left.woff2 | /app/project/static/lms_base/font/icon-left.woff2 |
lms_base/font/nmc.woff2 | /app/project/static/lms_base/font/nmc.woff2 |
lms_base/font/nmc.eot | /app/project/static/lms_base/font/nmc.eot |
lms_base/font/icon-left.woff | /app/project/static/lms_base/font/icon-left.woff |
lms_base/font/nmc.svg | /app/project/static/lms_base/font/nmc.svg |
lms_base/font/icon-left.svg | /app/project/static/lms_base/font/icon-left.svg |
lms_base/font/nmc.ttf | /app/project/static/lms_base/font/nmc.ttf |
lms_base/font/icon-left.eot | /app/project/static/lms_base/font/icon-left.eot |
lms_base/font/icon-left.ttf | /app/project/static/lms_base/font/icon-left.ttf |
lms_base/css/lms_base.css | /app/project/static/lms_base/css/lms_base.css |
lms_base/css/lms_base.css.map | /app/project/static/lms_base/css/lms_base.css.map |
lms_base/js/lms_base.js | /app/project/static/lms_base/js/lms_base.js |
lms_base/js/bootstrap.bundle.min.js | /app/project/static/lms_base/js/bootstrap.bundle.min.js |
reporting/css/report_pdf.css.map | /app/project/static/reporting/css/report_pdf.css.map |
reporting/css/report_pdf.css | /app/project/static/reporting/css/report_pdf.css |
reporting/images/nmcunilogo.png | /app/project/static/reporting/images/nmcunilogo.png |
reporting/images/background.jpg | /app/project/static/reporting/images/background.jpg |
dropzone/dropzone.min.css | /app/project/static/dropzone/dropzone.min.css |
dropzone/dropzone-amd-module.min.js | /app/project/static/dropzone/dropzone-amd-module.min.js |
dropzone/basic.min.css | /app/project/static/dropzone/basic.min.css |
dropzone/dropzone.min.js | /app/project/static/dropzone/dropzone.min.js |
lms_tales/font/nmc.woff | /app/project/static/lms_tales/font/nmc.woff |
lms_tales/font/icon-left.woff2 | /app/project/static/lms_tales/font/icon-left.woff2 |
lms_tales/font/nmc.woff2 | /app/project/static/lms_tales/font/nmc.woff2 |
lms_tales/font/nmc.eot | /app/project/static/lms_tales/font/nmc.eot |
lms_tales/font/icon-left.woff | /app/project/static/lms_tales/font/icon-left.woff |
lms_tales/font/nmc.svg | /app/project/static/lms_tales/font/nmc.svg |
lms_tales/font/icon-left.svg | /app/project/static/lms_tales/font/icon-left.svg |
lms_tales/font/nmc.ttf | /app/project/static/lms_tales/font/nmc.ttf |
lms_tales/font/icon-left.eot | /app/project/static/lms_tales/font/icon-left.eot |
lms_tales/font/icon-left.ttf | /app/project/static/lms_tales/font/icon-left.ttf |
lms_tales/js/lms_tales.js | /app/project/static/lms_tales/js/lms_tales.js |
opos/4_4.html | /app/project/static/opos/4_4.html |
opos/4_3.html | /app/project/static/opos/4_3.html |
opos/4_5.html | /app/project/static/opos/4_5.html |
opos/4_1.html | /app/project/static/opos/4_1.html |
tales_editor/favicon.ico | /app/project/static/tales_editor/favicon.ico |
tales_editor/index.html | /app/project/static/tales_editor/index.html |
tales_editor/css/chunk-vendors.css | /app/project/static/tales_editor/css/chunk-vendors.css |
tales_editor/css/app.css | /app/project/static/tales_editor/css/app.css |
tales_editor/img/bootstrap-icons.svg | /app/project/static/tales_editor/img/bootstrap-icons.svg |
tales_editor/img/remixicon.symbol.svg | /app/project/static/tales_editor/img/remixicon.symbol.svg |
tales_editor/js/app.js | /app/project/static/tales_editor/js/app.js |
tales_editor/js/app.js.map | /app/project/static/tales_editor/js/app.js.map |
tales_editor/js/chunk-vendors.js | /app/project/static/tales_editor/js/chunk-vendors.js |
tales_editor/js/chunk-vendors.js.map | /app/project/static/tales_editor/js/chunk-vendors.js.map |
images/opos_map_xs.png | /app/project/static/images/opos_map_xs.png |
images/opos_map_xl.png | /app/project/static/images/opos_map_xl.png |
images/edu-id-button-gray.png | /app/project/static/images/edu-id-button-gray.png |
images/icon_tales_mint.png | /app/project/static/images/icon_tales_mint.png |
images/favicon.ico | /app/project/static/images/favicon.ico |
images/door.jpg | /app/project/static/images/door.jpg |
images/icon_tales_transp_32x32.png | /app/project/static/images/icon_tales_transp_32x32.png |
images/uni-basel-logo-de.svg | /app/project/static/images/uni-basel-logo-de.svg |
images/raymond_ammann.jpg | /app/project/static/images/raymond_ammann.jpg |
images/help_en.jpg | /app/project/static/images/help_en.jpg |
images/opos_map_xs.avif | /app/project/static/images/opos_map_xs.avif |
images/opos_map_md.png | /app/project/static/images/opos_map_md.png |
images/help_de.jpg | /app/project/static/images/help_de.jpg |
images/bild.png | /app/project/static/images/bild.png |
images/help.jpg | /app/project/static/images/help.jpg |
images/Hochformat.jpg | /app/project/static/images/Hochformat.jpg |
images/empty_classroom.jpg | /app/project/static/images/empty_classroom.jpg |
images/uni-basel-logo-de.png | /app/project/static/images/uni-basel-logo-de.png |
images/contact-side-image-1.jpg | /app/project/static/images/contact-side-image-1.jpg |
images/icon_tales_white.png | /app/project/static/images/icon_tales_white.png |
images/portalflag.png | /app/project/static/images/portalflag.png |
images/uni-basel-logo-en.svg | /app/project/static/images/uni-basel-logo-en.svg |
images/contact-side-image-2.jpg | /app/project/static/images/contact-side-image-2.jpg |
images/alp_und_hirtenhorn.jpg | /app/project/static/images/alp_und_hirtenhorn.jpg |
images/icon_tales_transp.png | /app/project/static/images/icon_tales_transp.png |
images/Weltkarte_Opos.png | /app/project/static/images/Weltkarte_Opos.png |
images/batkitty.jpg | /app/project/static/images/batkitty.jpg |
images/help_fr.jpg | /app/project/static/images/help_fr.jpg |
nahtkurs_glossar/antikoagu.jpg | /app/project/static/nahtkurs_glossar/antikoagu.jpg |
nahtkurs_glossar/anamnese.jpg | /app/project/static/nahtkurs_glossar/anamnese.jpg |
nahtkurs_glossar/wundinfektion.jpg | /app/project/static/nahtkurs_glossar/wundinfektion.jpg |
nahtkurs_glossar/tensilestength.jpg | /app/project/static/nahtkurs_glossar/tensilestength.jpg |
nahtkurs_glossar/glucose.jpg | /app/project/static/nahtkurs_glossar/glucose.jpg |
nahtkurs_glossar/nacl.jpg | /app/project/static/nahtkurs_glossar/nacl.jpg |
sounds/temperiert_nr_7.mp3 | /app/project/static/sounds/temperiert_nr_7.mp3 |
sounds/alphorn_13.mp3 | /app/project/static/sounds/alphorn_13.mp3 |
sounds/alphorn_05.mp3 | /app/project/static/sounds/alphorn_05.mp3 |
sounds/alphorn_11.mp3 | /app/project/static/sounds/alphorn_11.mp3 |
sounds/naturton_nr_7.mp3 | /app/project/static/sounds/naturton_nr_7.mp3 |
sounds/hirtenhorn_04.mp3 | /app/project/static/sounds/hirtenhorn_04.mp3 |
sounds/alphorn_14.mp3 | /app/project/static/sounds/alphorn_14.mp3 |
sounds/alphorn_01.mp3 | /app/project/static/sounds/alphorn_01.mp3 |
sounds/alphorn_12.mp3 | /app/project/static/sounds/alphorn_12.mp3 |
sounds/alphorn_02.mp3 | /app/project/static/sounds/alphorn_02.mp3 |
sounds/alphorn_09.mp3 | /app/project/static/sounds/alphorn_09.mp3 |
sounds/alphorn_04.mp3 | /app/project/static/sounds/alphorn_04.mp3 |
sounds/alphorn_15.mp3 | /app/project/static/sounds/alphorn_15.mp3 |
sounds/hirtenhorn_07.mp3 | /app/project/static/sounds/hirtenhorn_07.mp3 |
sounds/alphorn_08.mp3 | /app/project/static/sounds/alphorn_08.mp3 |
sounds/alphorn_03.mp3 | /app/project/static/sounds/alphorn_03.mp3 |
sounds/hirtenhorn_02.mp3 | /app/project/static/sounds/hirtenhorn_02.mp3 |
sounds/alphorn_10.mp3 | /app/project/static/sounds/alphorn_10.mp3 |
sounds/hirtenhorn_01.mp3 | /app/project/static/sounds/hirtenhorn_01.mp3 |
sounds/hirtenhorn_06.mp3 | /app/project/static/sounds/hirtenhorn_06.mp3 |
sounds/alphorn_07.mp3 | /app/project/static/sounds/alphorn_07.mp3 |
sounds/temperiert_nr_11.mp3 | /app/project/static/sounds/temperiert_nr_11.mp3 |
sounds/hirtenhorn_08.mp3 | /app/project/static/sounds/hirtenhorn_08.mp3 |
sounds/naturton_nr_11.mp3 | /app/project/static/sounds/naturton_nr_11.mp3 |
sounds/alphorn_16.mp3 | /app/project/static/sounds/alphorn_16.mp3 |
sounds/hirtenhorn_05.mp3 | /app/project/static/sounds/hirtenhorn_05.mp3 |
sounds/hirtenhorn_03.mp3 | /app/project/static/sounds/hirtenhorn_03.mp3 |
sounds/alphorn_06.mp3 | /app/project/static/sounds/alphorn_06.mp3 |
django.contrib.staticfiles.finders.AppDirectoriesFinder (150 Dateien)
Pfad | Ort |
---|---|
modeltranslation/css/tabbed_translation_fields.css | /usr/local/lib/python3.11/site-packages/modeltranslation/static/modeltranslation/css/tabbed_translation_fields.css |
modeltranslation/js/clearable_inputs.js | /usr/local/lib/python3.11/site-packages/modeltranslation/static/modeltranslation/js/clearable_inputs.js |
modeltranslation/js/tabbed_translation_fields.js | /usr/local/lib/python3.11/site-packages/modeltranslation/static/modeltranslation/js/tabbed_translation_fields.js |
modeltranslation/js/force_jquery.js | /usr/local/lib/python3.11/site-packages/modeltranslation/static/modeltranslation/js/force_jquery.js |
admin/css/autocomplete.css | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/css/autocomplete.css |
admin/css/responsive.css | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/css/responsive.css |
admin/css/widgets.css | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/css/widgets.css |
admin/css/changelists.css | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/css/changelists.css |
admin/css/dark_mode.css | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/css/dark_mode.css |
admin/css/responsive_rtl.css | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/css/responsive_rtl.css |
admin/css/nav_sidebar.css | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/css/nav_sidebar.css |
admin/css/dashboard.css | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/css/dashboard.css |
admin/css/forms.css | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/css/forms.css |
admin/css/rtl.css | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/css/rtl.css |
admin/css/login.css | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/css/login.css |
admin/css/base.css | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/css/base.css |
admin/css/vendor/select2/select2.min.css | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/css/vendor/select2/select2.min.css |
admin/css/vendor/select2/select2.css | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/css/vendor/select2/select2.css |
admin/css/vendor/select2/LICENSE-SELECT2.md | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/css/vendor/select2/LICENSE-SELECT2.md |
admin/img/icon-clock.svg | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/icon-clock.svg |
admin/img/sorting-icons.svg | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/sorting-icons.svg |
admin/img/icon-alert.svg | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/icon-alert.svg |
admin/img/icon-changelink.svg | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/icon-changelink.svg |
admin/img/selector-icons.svg | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/selector-icons.svg |
admin/img/calendar-icons.svg | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/calendar-icons.svg |
admin/img/tooltag-arrowright.svg | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/tooltag-arrowright.svg |
admin/img/inline-delete.svg | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/inline-delete.svg |
admin/img/icon-yes.svg | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/icon-yes.svg |
admin/img/icon-unknown-alt.svg | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/icon-unknown-alt.svg |
admin/img/icon-viewlink.svg | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/icon-viewlink.svg |
admin/img/search.svg | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/search.svg |
admin/img/icon-deletelink.svg | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/icon-deletelink.svg |
admin/img/README.txt | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/README.txt |
admin/img/LICENSE | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/LICENSE |
admin/img/icon-calendar.svg | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/icon-calendar.svg |
admin/img/tooltag-add.svg | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/tooltag-add.svg |
admin/img/icon-unknown.svg | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/icon-unknown.svg |
admin/img/icon-addlink.svg | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/icon-addlink.svg |
admin/img/icon-no.svg | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/icon-no.svg |
admin/img/gis/move_vertex_off.svg | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/gis/move_vertex_off.svg |
admin/img/gis/move_vertex_on.svg | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/img/gis/move_vertex_on.svg |
admin/js/SelectBox.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/SelectBox.js |
admin/js/jquery.init.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/jquery.init.js |
admin/js/inlines.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/inlines.js |
admin/js/collapse.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/collapse.js |
admin/js/filters.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/filters.js |
admin/js/change_form.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/change_form.js |
admin/js/autocomplete.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/autocomplete.js |
admin/js/nav_sidebar.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/nav_sidebar.js |
admin/js/popup_response.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/popup_response.js |
admin/js/SelectFilter2.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/SelectFilter2.js |
admin/js/actions.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/actions.js |
admin/js/core.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/core.js |
admin/js/cancel.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/cancel.js |
admin/js/prepopulate.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/prepopulate.js |
admin/js/urlify.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/urlify.js |
admin/js/calendar.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/calendar.js |
admin/js/prepopulate_init.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/prepopulate_init.js |
admin/js/theme.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/theme.js |
admin/js/admin/DateTimeShortcuts.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js |
admin/js/admin/RelatedObjectLookups.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js |
admin/js/vendor/select2/select2.full.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/select2.full.js |
admin/js/vendor/select2/select2.full.min.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/select2.full.min.js |
admin/js/vendor/select2/LICENSE.md | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/LICENSE.md |
admin/js/vendor/select2/i18n/zh-CN.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/zh-CN.js |
admin/js/vendor/select2/i18n/sr-Cyrl.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sr-Cyrl.js |
admin/js/vendor/select2/i18n/uk.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/uk.js |
admin/js/vendor/select2/i18n/ar.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ar.js |
admin/js/vendor/select2/i18n/ka.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ka.js |
admin/js/vendor/select2/i18n/bn.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/bn.js |
admin/js/vendor/select2/i18n/pt.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/pt.js |
admin/js/vendor/select2/i18n/hi.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/hi.js |
admin/js/vendor/select2/i18n/dsb.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/dsb.js |
admin/js/vendor/select2/i18n/bs.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/bs.js |
admin/js/vendor/select2/i18n/ru.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ru.js |
admin/js/vendor/select2/i18n/ms.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ms.js |
admin/js/vendor/select2/i18n/et.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/et.js |
admin/js/vendor/select2/i18n/sl.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sl.js |
admin/js/vendor/select2/i18n/he.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/he.js |
admin/js/vendor/select2/i18n/is.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/is.js |
admin/js/vendor/select2/i18n/cs.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/cs.js |
admin/js/vendor/select2/i18n/sq.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sq.js |
admin/js/vendor/select2/i18n/sv.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sv.js |
admin/js/vendor/select2/i18n/ne.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ne.js |
admin/js/vendor/select2/i18n/ko.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ko.js |
admin/js/vendor/select2/i18n/vi.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/vi.js |
admin/js/vendor/select2/i18n/ca.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ca.js |
admin/js/vendor/select2/i18n/id.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/id.js |
admin/js/vendor/select2/i18n/nb.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/nb.js |
admin/js/vendor/select2/i18n/hr.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/hr.js |
admin/js/vendor/select2/i18n/af.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/af.js |
admin/js/vendor/select2/i18n/de.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/de.js |
admin/js/vendor/select2/i18n/mk.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/mk.js |
admin/js/vendor/select2/i18n/hy.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/hy.js |
admin/js/vendor/select2/i18n/it.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/it.js |
admin/js/vendor/select2/i18n/hu.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/hu.js |
admin/js/vendor/select2/i18n/ja.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ja.js |
admin/js/vendor/select2/i18n/sk.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sk.js |
admin/js/vendor/select2/i18n/hsb.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/hsb.js |
admin/js/vendor/select2/i18n/ro.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ro.js |
admin/js/vendor/select2/i18n/en.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/en.js |
admin/js/vendor/select2/i18n/el.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/el.js |
admin/js/vendor/select2/i18n/fa.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/fa.js |
admin/js/vendor/select2/i18n/pt-BR.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/pt-BR.js |
admin/js/vendor/select2/i18n/da.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/da.js |
admin/js/vendor/select2/i18n/sr.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sr.js |
admin/js/vendor/select2/i18n/ps.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ps.js |
admin/js/vendor/select2/i18n/lt.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/lt.js |
admin/js/vendor/select2/i18n/az.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/az.js |
admin/js/vendor/select2/i18n/fr.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/fr.js |
admin/js/vendor/select2/i18n/fi.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/fi.js |
admin/js/vendor/select2/i18n/tk.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/tk.js |
admin/js/vendor/select2/i18n/th.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/th.js |
admin/js/vendor/select2/i18n/gl.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/gl.js |
admin/js/vendor/select2/i18n/eu.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/eu.js |
admin/js/vendor/select2/i18n/es.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/es.js |
admin/js/vendor/select2/i18n/km.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/km.js |
admin/js/vendor/select2/i18n/bg.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/bg.js |
admin/js/vendor/select2/i18n/lv.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/lv.js |
admin/js/vendor/select2/i18n/zh-TW.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/zh-TW.js |
admin/js/vendor/select2/i18n/pl.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/pl.js |
admin/js/vendor/select2/i18n/tr.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/tr.js |
admin/js/vendor/select2/i18n/nl.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/nl.js |
admin/js/vendor/xregexp/xregexp.min.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/xregexp/xregexp.min.js |
admin/js/vendor/xregexp/LICENSE.txt | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/xregexp/LICENSE.txt |
admin/js/vendor/xregexp/xregexp.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/xregexp/xregexp.js |
admin/js/vendor/jquery/jquery.min.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/jquery/jquery.min.js |
admin/js/vendor/jquery/jquery.js | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/jquery/jquery.js |
admin/js/vendor/jquery/LICENSE.txt | /usr/local/lib/python3.11/site-packages/django/contrib/admin/static/admin/js/vendor/jquery/LICENSE.txt |
django_extensions/css/jquery.autocomplete.css | /usr/local/lib/python3.11/site-packages/django_extensions/static/django_extensions/css/jquery.autocomplete.css |
django_extensions/img/indicator.gif | /usr/local/lib/python3.11/site-packages/django_extensions/static/django_extensions/img/indicator.gif |
django_extensions/js/jquery.ajaxQueue.js | /usr/local/lib/python3.11/site-packages/django_extensions/static/django_extensions/js/jquery.ajaxQueue.js |
django_extensions/js/jquery.autocomplete.js | /usr/local/lib/python3.11/site-packages/django_extensions/static/django_extensions/js/jquery.autocomplete.js |
django_extensions/js/jquery.bgiframe.js | /usr/local/lib/python3.11/site-packages/django_extensions/static/django_extensions/js/jquery.bgiframe.js |
markdownx/admin/css/markdownx.css | /usr/local/lib/python3.11/site-packages/markdownx/static/markdownx/admin/css/markdownx.css |
markdownx/admin/css/markdownx.min.css | /usr/local/lib/python3.11/site-packages/markdownx/static/markdownx/admin/css/markdownx.min.css |
markdownx/js/markdownx.min.js | /usr/local/lib/python3.11/site-packages/markdownx/static/markdownx/js/markdownx.min.js |
markdownx/js/markdownx.js | /usr/local/lib/python3.11/site-packages/markdownx/static/markdownx/js/markdownx.js |
django-htmx.js | /usr/local/lib/python3.11/site-packages/django_htmx/static/django-htmx.js |
admin/rosetta/css/rosetta.css | /usr/local/lib/python3.11/site-packages/rosetta/static/admin/rosetta/css/rosetta.css |
admin/rosetta/js/rosetta.js | /usr/local/lib/python3.11/site-packages/rosetta/static/admin/rosetta/js/rosetta.js |
admin/img/icon_searchbox_rosetta.png | /usr/local/lib/python3.11/site-packages/rosetta/static/admin/img/icon_searchbox_rosetta.png |
notifications/notify.js | /usr/local/lib/python3.11/site-packages/notifications/static/notifications/notify.js |
debug_toolbar/css/toolbar.css | /usr/local/lib/python3.11/site-packages/debug_toolbar/static/debug_toolbar/css/toolbar.css |
debug_toolbar/css/print.css | /usr/local/lib/python3.11/site-packages/debug_toolbar/static/debug_toolbar/css/print.css |
debug_toolbar/js/utils.js | /usr/local/lib/python3.11/site-packages/debug_toolbar/static/debug_toolbar/js/utils.js |
debug_toolbar/js/toolbar.js | /usr/local/lib/python3.11/site-packages/debug_toolbar/static/debug_toolbar/js/toolbar.js |
debug_toolbar/js/history.js | /usr/local/lib/python3.11/site-packages/debug_toolbar/static/debug_toolbar/js/history.js |
debug_toolbar/js/timer.js | /usr/local/lib/python3.11/site-packages/debug_toolbar/static/debug_toolbar/js/timer.js |
debug_toolbar/js/redirect.js | /usr/local/lib/python3.11/site-packages/debug_toolbar/static/debug_toolbar/js/redirect.js |
Templates (18 gerendert)
Template-Pfade
- /app/project/templates
- /usr/local/lib/python3.11/site-packages/django/forms/templates
Templates
- cachalot/panel.html
- /usr/local/lib/python3.11/site-packages/cachalot/templates/cachalot/panel.html
-
Context zeigen
{'False': False, 'None': None, 'True': True} {'invalidations_per_db': dict_items([('default', [('django_q', 'Failure', datetime.datetime(2025, 4, 4, 11, 30, 13, 515122)), ('django_q', 'Schedule', datetime.datetime(2025, 4, 4, 11, 30, 10, 351623)), ('reporting', 'Report', datetime.datetime(2025, 4, 4, 9, 5, 11, 893340)), ('lms_tales', 'CourseMetrics', datetime.datetime(2025, 4, 4, 1, 0, 24, 546590)), ('search', 'FulltextSearchModel', datetime.datetime(2025, 4, 4, 0, 0, 26, 119002)), ('lms_roles', 'CourseRole', datetime.datetime(2025, 2, 11, 12, 14, 18, 842206)), ('search', 'TrigramSearchModel', datetime.datetime(2025, 2, 11, 12, 14, 18, 831449)), ('startpage', 'SliderItem', datetime.datetime(2025, 2, 11, 12, 14, 18, 824687)), ('startpage', 'CategoryCourse', datetime.datetime(2025, 2, 11, 12, 14, 18, 824687)), ('tags', 'Category', datetime.datetime(2025, 2, 11, 12, 14, 18, 817718)), ('tags', 'Tag', datetime.datetime(2025, 2, 11, 12, 14, 18, 817718)), ('lms_static_texts', 'StaticText', datetime.datetime(2025, 2, 11, 12, 14, 18, 810671)), ('lms_static_texts', 'HistoricalStaticText', datetime.datetime(2025, 2, 11, 12, 14, 18, 810671)), ('lms_comments', 'Comment', datetime.datetime(2025, 2, 11, 12, 14, 18, 779678)), ('lms_comments', 'Reply', datetime.datetime(2025, 2, 11, 12, 14, 18, 779678)), ('lms_comments', 'Reaction', datetime.datetime(2025, 2, 11, 12, 14, 18, 779678)), ('lms_comments', 'Flag', datetime.datetime(2025, 2, 11, 12, 14, 18, 779678)), ('lms_tales', 'TalesStep', datetime.datetime(2025, 2, 11, 12, 14, 18, 768985)), ('lms_tales', 'TalesStepFileNew', datetime.datetime(2025, 2, 11, 12, 14, 18, 768985)), ('lms_tales', 'TalesStepFile', datetime.datetime(2025, 2, 11, 12, 14, 18, 768985)), ('lms_tales', 'TalesCourseFile', datetime.datetime(2025, 2, 11, 12, 14, 18, 768985)), ('lms_tales', 'TalesChapter', datetime.datetime(2025, 2, 11, 12, 14, 18, 768985)), ('lms_tales', 'TalesCourse', datetime.datetime(2025, 2, 11, 12, 14, 18, 768985)), ('lms_tales', 'TalesAuthor', datetime.datetime(2025, 2, 11, 12, 14, 18, 768985)), ('lms_tales', 'TalesPartner', datetime.datetime(2025, 2, 11, 12, 14, 18, 768985)), ('lms_tales', 'TalesGlossaryItem', datetime.datetime(2025, 2, 11, 12, 14, 18, 768985)), ('lms_tales', 'TalesPath', datetime.datetime(2025, 2, 11, 12, 14, 18, 768985)), ('lms_tales', 'TalesPathStep', datetime.datetime(2025, 2, 11, 12, 14, 18, 768985)), ('lms_tales', 'TalesCourseRun', datetime.datetime(2025, 2, 11, 12, 14, 18, 768985)), ('lms_tales', 'TalesCourseRunStep', datetime.datetime(2025, 2, 11, 12, 14, 18, 768985)), ('lms_tales', 'ScheduledMessage', datetime.datetime(2025, 2, 11, 12, 14, 18, 768985)), ('lms_tales', 'HistoricalTalesStep', datetime.datetime(2025, 2, 11, 12, 14, 18, 768985)), ('lms_tales', 'HistoricalTalesStepFile', datetime.datetime(2025, 2, 11, 12, 14, 18, 768985)), ('lms_tales', 'HistoricalTalesChapter', datetime.datetime(2025, 2, 11, 12, 14, 18, 768985)), ('lms_tales', 'HistoricalTalesCourse', datetime.datetime(2025, 2, 11, 12, 14, 18, 768985)), ('lms_tales', 'HistoricalTalesPath', datetime.datetime(2025, 2, 11, 12, 14, 18, 768985)), ('lms_base', 'GlossaryMixin', datetime.datetime(2025, 2, 11, 12, 14, 18, 734014)), ('lms_base', 'GlossaryItemMixin', datetime.datetime(2025, 2, 11, 12, 14, 18, 734014)), ('users', 'User', datetime.datetime(2025, 2, 11, 12, 14, 18, 726994)), ('users', 'UserSettings', datetime.datetime(2025, 2, 11, 12, 14, 18, 726994)), ('auth', 'Permission', datetime.datetime(2025, 2, 11, 12, 14, 18, 718815)), ('auth', 'Group', datetime.datetime(2025, 2, 11, 12, 14, 18, 718815)), ('contenttypes', 'ContentType', datetime.datetime(2025, 2, 11, 12, 14, 18, 718815)), ('sessions', 'Session', datetime.datetime(2025, 2, 11, 12, 14, 18, 718815)), ('sites', 'Site', datetime.datetime(2025, 2, 11, 12, 14, 18, 718815)), ('flatpages', 'FlatPage', datetime.datetime(2025, 2, 11, 12, 14, 18, 718815)), ('admin', 'LogEntry', datetime.datetime(2025, 2, 11, 12, 14, 18, 718815)), ('redirects', 'Redirect', datetime.datetime(2025, 2, 11, 12, 14, 18, 718815)), ('account', 'EmailAddress', datetime.datetime(2025, 2, 11, 12, 14, 18, 718815)), ('account', 'EmailConfirmation', datetime.datetime(2025, 2, 11, 12, 14, 18, 718815)), ('socialaccount', 'SocialApp', datetime.datetime(2025, 2, 11, 12, 14, 18, 718815)), ('socialaccount', 'SocialAccount', datetime.datetime(2025, 2, 11, 12, 14, 18, 718815)), ('socialaccount', 'SocialToken', datetime.datetime(2025, 2, 11, 12, 14, 18, 718815)), ('waffle', 'Flag', datetime.datetime(2025, 2, 11, 12, 14, 18, 718815)), ('waffle', 'Switch', datetime.datetime(2025, 2, 11, 12, 14, 18, 718815)), ('waffle', 'Sample', datetime.datetime(2025, 2, 11, 12, 14, 18, 718815)), ('tos', 'TermsOfService', datetime.datetime(2025, 2, 11, 12, 14, 18, 718815)), ('tos', 'UserAgreement', datetime.datetime(2025, 2, 11, 12, 14, 18, 718815)), ('impersonate', 'ImpersonationLog', datetime.datetime(2025, 2, 11, 12, 14, 18, 718815)), ('django_q', 'OrmQ', datetime.datetime(2025, 2, 11, 12, 14, 18, 718815)), ('notifications', 'Notification', datetime.datetime(2025, 2, 11, 12, 14, 18, 718815))])])}
- components/header.html
- /app/project/templates/components/header.html
-
Context zeigen
{'False': False, 'None': None, 'True': True} {'CI_COMMIT_SHORT_SHA': '0809bd77', 'CI_COMMIT_TAG': '', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'DEPLOY_ENV': 'staging', 'LANGUAGES': '<<languages>>', 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'fr', 'MEDIA_URL': '/media/', 'RELEASE_NAME': '', 'STATIC_URL': '/static/', 'TIME_ZONE': 'Europe/Zurich', 'csrf_token': '<SimpleLazyObject: ' "'gqTqi9ndaaUtywzaDn9HFXd7V6GoX1emlP7CTozbq9mC8psSwYMEHYZ1OKSIgN7t'>", 'messages': <FallbackStorage: request=<ASGIRequest: GET '/fr/exploring-possible-futures-44/'>>, 'perms': PermWrapper(<SimpleLazyObject: <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x706c8ffd5fd0>>>), 'request': '<<request>>', 'user': '<SimpleLazyObject: <SimpleLazyObject: ' '<django.contrib.auth.models.AnonymousUser object at ' '0x706c8ffd5fd0>>>'} {'active_courseruns': [], 'active_language_available': False, 'available_languages': [('en', 'Englisch')], 'course': <TalesCourse: Exploring Possible Futures>, 'course_contact': '', 'files': '<<queryset of lms_tales.TalesCourseFile>>', 'first_step': <TalesStep: Why do we need economic models?>, 'is_editor': False, 'object': <TalesCourse: Exploring Possible Futures>, 'talescourse': <TalesCourse: Exploring Possible Futures>, 'view': <lms_tales.views.course_views.CourseDetails object at 0x706c8fb43890>} {'block': <Block Node: header. Contents: [<TextNode: '\n '>, <IncludeNode: template=<FilterExpression '"components/header.html"'>>, <TextNode: '\n '>]>}
- step/step_home.html
- /app/project/lms_tales/templates/step/step_home.html
-
Context zeigen
{'False': False, 'None': None, 'True': True} {'CI_COMMIT_SHORT_SHA': '0809bd77', 'CI_COMMIT_TAG': '', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'DEPLOY_ENV': 'staging', 'LANGUAGES': '<<languages>>', 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'de', 'MEDIA_URL': '/media/', 'RELEASE_NAME': '', 'STATIC_URL': '/static/', 'TIME_ZONE': 'Europe/Zurich', 'csrf_token': '<SimpleLazyObject: ' "'v3VtdI28wjIoZKXFyt5UFKcbUP84mZx1As9FOXe6MiaxzDQnr4IRHLY5NtkoFLq8'>", 'messages': <FallbackStorage: request=<ASGIRequest: GET '/de/exploring-possible-futures-44/second-best-worlds-228/first-best-or-second-best-coping-with-realities-1293'>>, 'perms': PermWrapper(<SimpleLazyObject: <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x706c8fde0b90>>>), 'request': '<<request>>', 'user': '<SimpleLazyObject: <SimpleLazyObject: ' '<django.contrib.auth.models.AnonymousUser object at ' '0x706c8fde0b90>>>'} {'active_courseruns': [], 'active_courserunsteps': [], 'active_language_available': False, 'available_languages': [('en', 'Englisch')], 'course': <TalesCourse: Exploring Possible Futures>, 'course_contact': '', 'files': '<<queryset of lms_tales.TalesStepFileNew>>', 'is_editor': False, 'object': <TalesStep: First-best or second-best: coping with realities>, 'talesstep': <TalesStep: First-best or second-best: coping with realities>, 'view': <lms_tales.views.step_views.StepDetails object at 0x706c94fc1850>}
- lms_tales_base.html
- /app/project/templates/lms_tales_base.html
-
Context zeigen
{'False': False, 'None': None, 'True': True} {'CI_COMMIT_SHORT_SHA': '0809bd77', 'CI_COMMIT_TAG': '', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'DEPLOY_ENV': 'staging', 'LANGUAGES': '<<languages>>', 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'de', 'MEDIA_URL': '/media/', 'RELEASE_NAME': '', 'STATIC_URL': '/static/', 'TIME_ZONE': 'Europe/Zurich', 'csrf_token': '<SimpleLazyObject: ' "'v3VtdI28wjIoZKXFyt5UFKcbUP84mZx1As9FOXe6MiaxzDQnr4IRHLY5NtkoFLq8'>", 'messages': <FallbackStorage: request=<ASGIRequest: GET '/de/exploring-possible-futures-44/second-best-worlds-228/first-best-or-second-best-coping-with-realities-1293'>>, 'perms': PermWrapper(<SimpleLazyObject: <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x706c8fde0b90>>>), 'request': '<<request>>', 'user': '<SimpleLazyObject: <SimpleLazyObject: ' '<django.contrib.auth.models.AnonymousUser object at ' '0x706c8fde0b90>>>'} {'active_courseruns': [], 'active_courserunsteps': [], 'active_language_available': False, 'available_languages': [('en', 'Englisch')], 'course': <TalesCourse: Exploring Possible Futures>, 'course_contact': '', 'files': '<<queryset of lms_tales.TalesStepFileNew>>', 'is_editor': False, 'object': <TalesStep: First-best or second-best: coping with realities>, 'talesstep': <TalesStep: First-best or second-best: coping with realities>, 'view': <lms_tales.views.step_views.StepDetails object at 0x706c94fc1850>}
- base.html
- /app/project/templates/base.html
-
Context zeigen
{'False': False, 'None': None, 'True': True} {'CI_COMMIT_SHORT_SHA': '0809bd77', 'CI_COMMIT_TAG': '', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'DEPLOY_ENV': 'staging', 'LANGUAGES': '<<languages>>', 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'de', 'MEDIA_URL': '/media/', 'RELEASE_NAME': '', 'STATIC_URL': '/static/', 'TIME_ZONE': 'Europe/Zurich', 'csrf_token': '<SimpleLazyObject: ' "'v3VtdI28wjIoZKXFyt5UFKcbUP84mZx1As9FOXe6MiaxzDQnr4IRHLY5NtkoFLq8'>", 'messages': <FallbackStorage: request=<ASGIRequest: GET '/de/exploring-possible-futures-44/second-best-worlds-228/first-best-or-second-best-coping-with-realities-1293'>>, 'perms': PermWrapper(<SimpleLazyObject: <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x706c8fde0b90>>>), 'request': '<<request>>', 'user': '<SimpleLazyObject: <SimpleLazyObject: ' '<django.contrib.auth.models.AnonymousUser object at ' '0x706c8fde0b90>>>'} {'active_courseruns': [], 'active_courserunsteps': [], 'active_language_available': False, 'available_languages': [('en', 'Englisch')], 'course': <TalesCourse: Exploring Possible Futures>, 'course_contact': '', 'files': '<<queryset of lms_tales.TalesStepFileNew>>', 'is_editor': False, 'object': <TalesStep: First-best or second-best: coping with realities>, 'talesstep': <TalesStep: First-best or second-best: coping with realities>, 'view': <lms_tales.views.step_views.StepDetails object at 0x706c94fc1850>}
- components/sidebar-navigation.html
- /app/project/templates/components/sidebar-navigation.html
-
Context zeigen
{'False': False, 'None': None, 'True': True} {'CI_COMMIT_SHORT_SHA': '0809bd77', 'CI_COMMIT_TAG': '', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'DEPLOY_ENV': 'staging', 'LANGUAGES': '<<languages>>', 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'fr', 'MEDIA_URL': '/media/', 'RELEASE_NAME': '', 'STATIC_URL': '/static/', 'TIME_ZONE': 'Europe/Zurich', 'csrf_token': '<SimpleLazyObject: ' "'gqTqi9ndaaUtywzaDn9HFXd7V6GoX1emlP7CTozbq9mC8psSwYMEHYZ1OKSIgN7t'>", 'messages': <FallbackStorage: request=<ASGIRequest: GET '/fr/exploring-possible-futures-44/'>>, 'perms': PermWrapper(<SimpleLazyObject: <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x706c8ffd5fd0>>>), 'request': '<<request>>', 'user': '<SimpleLazyObject: <SimpleLazyObject: ' '<django.contrib.auth.models.AnonymousUser object at ' '0x706c8ffd5fd0>>>'} {'active_courseruns': [], 'active_language_available': False, 'available_languages': [('en', 'Englisch')], 'course': <TalesCourse: Exploring Possible Futures>, 'course_contact': '', 'files': '<<queryset of lms_tales.TalesCourseFile>>', 'first_step': <TalesStep: Why do we need economic models?>, 'is_editor': False, 'object': <TalesCourse: Exploring Possible Futures>, 'talescourse': <TalesCourse: Exploring Possible Futures>, 'view': <lms_tales.views.course_views.CourseDetails object at 0x706c8fb43890>} {'block': <Block Node: sidebar-nav. Contents: [<TextNode: '\n <nav id="sid'>, <django.template.library.SimpleNode object at 0x706c94d8a890>, <TextNode: '>\n '>, <django.templatetags.i18n.TranslateNode object at 0x706c8f960f10>, <TextNode: '</span>\n '>, <IfNode>, <TextNode: '\n '>, <django.template.library.SimpleNode object at 0x706c8f961f50>, <TextNode: '>\n '>, <django.templatetags.i18n.TranslateNode object at 0x706c940d14d0>, <TextNode: '</span>\n '>, <Block Node: navigation. Contents: [<TextNode: '\n '>]>, <TextNode: '\n </div>\n '>]>} {'block': <Block Node: navigation. Contents: [<TextNode: '\n '>, <IncludeNode: template=<FilterExpression '"components/sidebar-navigation.html"'>>, <TextNode: '\n'>]>}
- components/header.html
- /app/project/templates/components/header.html
-
Context zeigen
{'False': False, 'None': None, 'True': True} {'CI_COMMIT_SHORT_SHA': '0809bd77', 'CI_COMMIT_TAG': '', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'DEPLOY_ENV': 'staging', 'LANGUAGES': '<<languages>>', 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'de', 'MEDIA_URL': '/media/', 'RELEASE_NAME': '', 'STATIC_URL': '/static/', 'TIME_ZONE': 'Europe/Zurich', 'csrf_token': '<SimpleLazyObject: ' "'v3VtdI28wjIoZKXFyt5UFKcbUP84mZx1As9FOXe6MiaxzDQnr4IRHLY5NtkoFLq8'>", 'messages': <FallbackStorage: request=<ASGIRequest: GET '/de/exploring-possible-futures-44/second-best-worlds-228/first-best-or-second-best-coping-with-realities-1293'>>, 'perms': PermWrapper(<SimpleLazyObject: <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x706c8fde0b90>>>), 'request': '<<request>>', 'user': '<SimpleLazyObject: <SimpleLazyObject: ' '<django.contrib.auth.models.AnonymousUser object at ' '0x706c8fde0b90>>>'} {'active_courseruns': [], 'active_courserunsteps': [], 'active_language_available': False, 'available_languages': [('en', 'Englisch')], 'course': <TalesCourse: Exploring Possible Futures>, 'course_contact': '', 'files': '<<queryset of lms_tales.TalesStepFileNew>>', 'is_editor': False, 'object': <TalesStep: First-best or second-best: coping with realities>, 'talesstep': <TalesStep: First-best or second-best: coping with realities>, 'view': <lms_tales.views.step_views.StepDetails object at 0x706c94fc1850>} {'block': <Block Node: header. Contents: [<TextNode: '\n '>, <IncludeNode: template=<FilterExpression '"components/header.html"'>>, <TextNode: '\n '>]>}
- components/sidebar-navigation.html
- /app/project/templates/components/sidebar-navigation.html
-
Context zeigen
{'False': False, 'None': None, 'True': True} {'CI_COMMIT_SHORT_SHA': '0809bd77', 'CI_COMMIT_TAG': '', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'DEPLOY_ENV': 'staging', 'LANGUAGES': '<<languages>>', 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'de', 'MEDIA_URL': '/media/', 'RELEASE_NAME': '', 'STATIC_URL': '/static/', 'TIME_ZONE': 'Europe/Zurich', 'csrf_token': '<SimpleLazyObject: ' "'v3VtdI28wjIoZKXFyt5UFKcbUP84mZx1As9FOXe6MiaxzDQnr4IRHLY5NtkoFLq8'>", 'messages': <FallbackStorage: request=<ASGIRequest: GET '/de/exploring-possible-futures-44/second-best-worlds-228/first-best-or-second-best-coping-with-realities-1293'>>, 'perms': PermWrapper(<SimpleLazyObject: <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x706c8fde0b90>>>), 'request': '<<request>>', 'user': '<SimpleLazyObject: <SimpleLazyObject: ' '<django.contrib.auth.models.AnonymousUser object at ' '0x706c8fde0b90>>>'} {'active_courseruns': [], 'active_courserunsteps': [], 'active_language_available': False, 'available_languages': [('en', 'Englisch')], 'course': <TalesCourse: Exploring Possible Futures>, 'course_contact': '', 'files': '<<queryset of lms_tales.TalesStepFileNew>>', 'is_editor': False, 'object': <TalesStep: First-best or second-best: coping with realities>, 'talesstep': <TalesStep: First-best or second-best: coping with realities>, 'view': <lms_tales.views.step_views.StepDetails object at 0x706c94fc1850>} {'block': <Block Node: sidebar-nav. Contents: [<TextNode: '\n <nav id="sid'>, <django.template.library.SimpleNode object at 0x706c942cc550>, <TextNode: '>\n '>, <django.templatetags.i18n.TranslateNode object at 0x706c8f8c36d0>, <TextNode: '</span>\n '>, <IfNode>, <TextNode: '\n '>, <django.template.library.SimpleNode object at 0x706c9531ca50>, <TextNode: '>\n '>, <django.templatetags.i18n.TranslateNode object at 0x706c95826950>, <TextNode: '</span>\n '>, <Block Node: navigation. Contents: [<TextNode: '\n '>]>, <TextNode: '\n </div>\n '>]>} {'block': <Block Node: navigation. Contents: [<TextNode: '\n '>, <IncludeNode: template=<FilterExpression '"components/sidebar-navigation.html"'>>, <TextNode: '\n'>]>}
- course-title.html
- /app/project/lms_tales/templates/course-title.html
-
Context zeigen
{'False': False, 'None': None, 'True': True} {'CI_COMMIT_SHORT_SHA': '0809bd77', 'CI_COMMIT_TAG': '', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'DEPLOY_ENV': 'staging', 'LANGUAGES': '<<languages>>', 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'fr', 'MEDIA_URL': '/media/', 'RELEASE_NAME': '', 'STATIC_URL': '/static/', 'TIME_ZONE': 'Europe/Zurich', 'csrf_token': '<SimpleLazyObject: ' "'gqTqi9ndaaUtywzaDn9HFXd7V6GoX1emlP7CTozbq9mC8psSwYMEHYZ1OKSIgN7t'>", 'messages': <FallbackStorage: request=<ASGIRequest: GET '/fr/exploring-possible-futures-44/'>>, 'perms': PermWrapper(<SimpleLazyObject: <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x706c8ffd5fd0>>>), 'request': '<<request>>', 'user': '<SimpleLazyObject: <SimpleLazyObject: ' '<django.contrib.auth.models.AnonymousUser object at ' '0x706c8ffd5fd0>>>'} {'active_courseruns': [], 'active_language_available': False, 'available_languages': [('en', 'Englisch')], 'course': <TalesCourse: Exploring Possible Futures>, 'course_contact': '', 'files': '<<queryset of lms_tales.TalesCourseFile>>', 'first_step': <TalesStep: Why do we need economic models?>, 'is_editor': False, 'object': <TalesCourse: Exploring Possible Futures>, 'talescourse': <TalesCourse: Exploring Possible Futures>, 'view': <lms_tales.views.course_views.CourseDetails object at 0x706c8fb43890>} {'block': <Block Node: breadcrumb-bar. Contents: [<TextNode: '\n <div id="tit'>, <Block Node: sidebar-arrow. Contents: [<TextNode: '\n <div'>, <django.template.library.SimpleNode object at 0x706c94d8af50>, <TextNode: '\n '>, <django.templatetags.i18n.TranslateNode object at 0x706c8f472c50>, <TextNode: '</span>\n '>]>, <TextNode: '\n <div cla'>, <Block Node: breadcrumb. Contents: [<TextNode: '\n '>]>, <TextNode: '\n '>]>} {'block': <Block Node: breadcrumb. Contents: [<TextNode: '\n '>, <IncludeNode: template=<FilterExpression '"course-title.html"'>>, <TextNode: '\n'>]>}
- htmx/course-author-list.html
- /app/project/lms_tales/templates/htmx/course-author-list.html
-
Context zeigen
{'False': False, 'None': None, 'True': True} {'CI_COMMIT_SHORT_SHA': '0809bd77', 'CI_COMMIT_TAG': '', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'DEPLOY_ENV': 'staging', 'LANGUAGES': '<<languages>>', 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'fr', 'MEDIA_URL': '/media/', 'RELEASE_NAME': '', 'STATIC_URL': '/static/', 'TIME_ZONE': 'Europe/Zurich', 'csrf_token': '<SimpleLazyObject: ' "'gqTqi9ndaaUtywzaDn9HFXd7V6GoX1emlP7CTozbq9mC8psSwYMEHYZ1OKSIgN7t'>", 'messages': <FallbackStorage: request=<ASGIRequest: GET '/fr/exploring-possible-futures-44/'>>, 'perms': PermWrapper(<SimpleLazyObject: <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x706c8ffd5fd0>>>), 'request': '<<request>>', 'user': '<SimpleLazyObject: <SimpleLazyObject: ' '<django.contrib.auth.models.AnonymousUser object at ' '0x706c8ffd5fd0>>>'} {'active_courseruns': [], 'active_language_available': False, 'available_languages': [('en', 'Englisch')], 'course': <TalesCourse: Exploring Possible Futures>, 'course_contact': '', 'files': '<<queryset of lms_tales.TalesCourseFile>>', 'first_step': <TalesStep: Why do we need economic models?>, 'is_editor': False, 'object': <TalesCourse: Exploring Possible Futures>, 'talescourse': <TalesCourse: Exploring Possible Futures>, 'view': <lms_tales.views.course_views.CourseDetails object at 0x706c8fb43890>} {'block': <Block Node: main-content. Contents: [<TextNode: '\n <main id="main-conte'>, <Block Node: content. Contents: [<TextNode: '\n '>, <django.template.library.SimpleNode object at 0x706c8f841250>, <TextNode: '\n '>, <django.template.library.SimpleNode object at 0x706c8f842410>, <TextNode: '\n '>, <django.template.library.SimpleNode object at 0x706c8f843d50>, <TextNode: '\n <div style="'>, <Variable Node: MEDIA_URL>, <Variable Node: object.title_image>, <TextNode: "');\n ">, <Waffle node: 'show_language_warning'>, <TextNode: '\n '>, <Variable Node: object.title>, <TextNode: '</h1>\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n <div'>, <IfNode>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n <div'>, <WithNode>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <TextNode: '\n '>, <Waffle node: 'path_is_active'>, <TextNode: '\n '>, <TextNode: '\n <div'>]>, <TextNode: '\n'>]>} {'block': <Block Node: content. Contents: [<TextNode: '\n '>, <django.template.library.SimpleNode object at 0x706c8f841250>, <TextNode: '\n '>, <django.template.library.SimpleNode object at 0x706c8f842410>, <TextNode: '\n '>, <django.template.library.SimpleNode object at 0x706c8f843d50>, <TextNode: '\n <div style="'>, <Variable Node: MEDIA_URL>, <Variable Node: object.title_image>, <TextNode: "');\n ">, <Waffle node: 'show_language_warning'>, <TextNode: '\n '>, <Variable Node: object.title>, <TextNode: '</h1>\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n <div'>, <IfNode>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n <div'>, <WithNode>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <TextNode: '\n '>, <Waffle node: 'path_is_active'>, <TextNode: '\n '>, <TextNode: '\n <div'>]>, 'can_add': False, 'can_change': False, 'can_delete': False} {'objects': '<<multilingualqueryset of lms_tales.TalesAuthor>>'}
- step/step-title.html
- /app/project/lms_tales/templates/step/step-title.html
-
Context zeigen
{'False': False, 'None': None, 'True': True} {'CI_COMMIT_SHORT_SHA': '0809bd77', 'CI_COMMIT_TAG': '', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'DEPLOY_ENV': 'staging', 'LANGUAGES': '<<languages>>', 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'de', 'MEDIA_URL': '/media/', 'RELEASE_NAME': '', 'STATIC_URL': '/static/', 'TIME_ZONE': 'Europe/Zurich', 'csrf_token': '<SimpleLazyObject: ' "'v3VtdI28wjIoZKXFyt5UFKcbUP84mZx1As9FOXe6MiaxzDQnr4IRHLY5NtkoFLq8'>", 'messages': <FallbackStorage: request=<ASGIRequest: GET '/de/exploring-possible-futures-44/second-best-worlds-228/first-best-or-second-best-coping-with-realities-1293'>>, 'perms': PermWrapper(<SimpleLazyObject: <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x706c8fde0b90>>>), 'request': '<<request>>', 'user': '<SimpleLazyObject: <SimpleLazyObject: ' '<django.contrib.auth.models.AnonymousUser object at ' '0x706c8fde0b90>>>'} {'active_courseruns': [], 'active_courserunsteps': [], 'active_language_available': False, 'available_languages': [('en', 'Englisch')], 'course': <TalesCourse: Exploring Possible Futures>, 'course_contact': '', 'files': '<<queryset of lms_tales.TalesStepFileNew>>', 'is_editor': False, 'object': <TalesStep: First-best or second-best: coping with realities>, 'talesstep': <TalesStep: First-best or second-best: coping with realities>, 'view': <lms_tales.views.step_views.StepDetails object at 0x706c94fc1850>} {'block': <Block Node: breadcrumb-bar. Contents: [<TextNode: '\n <div id="tit'>, <Block Node: sidebar-arrow. Contents: [<TextNode: '\n <div'>, <django.template.library.SimpleNode object at 0x706c94e41090>, <TextNode: '\n '>, <django.templatetags.i18n.TranslateNode object at 0x706c942cfb90>, <TextNode: '</span>\n '>]>, <TextNode: '\n <div cla'>, <Block Node: breadcrumb. Contents: [<TextNode: '\n '>]>, <TextNode: '\n '>]>} {'block': <Block Node: breadcrumb. Contents: [<TextNode: '\n '>, <IncludeNode: template=<FilterExpression '"step/step-title.html"'>>, <TextNode: '\n'>]>}
- htmx/course-author-detail.html
- /app/project/lms_tales/templates/htmx/course-author-detail.html
-
Context zeigen
{'False': False, 'None': None, 'True': True} {'CI_COMMIT_SHORT_SHA': '0809bd77', 'CI_COMMIT_TAG': '', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'DEPLOY_ENV': 'staging', 'LANGUAGES': '<<languages>>', 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'fr', 'MEDIA_URL': '/media/', 'RELEASE_NAME': '', 'STATIC_URL': '/static/', 'TIME_ZONE': 'Europe/Zurich', 'csrf_token': '<SimpleLazyObject: ' "'gqTqi9ndaaUtywzaDn9HFXd7V6GoX1emlP7CTozbq9mC8psSwYMEHYZ1OKSIgN7t'>", 'messages': <FallbackStorage: request=<ASGIRequest: GET '/fr/exploring-possible-futures-44/'>>, 'perms': PermWrapper(<SimpleLazyObject: <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x706c8ffd5fd0>>>), 'request': '<<request>>', 'user': '<SimpleLazyObject: <SimpleLazyObject: ' '<django.contrib.auth.models.AnonymousUser object at ' '0x706c8ffd5fd0>>>'} {'active_courseruns': [], 'active_language_available': False, 'available_languages': [('en', 'Englisch')], 'course': <TalesCourse: Exploring Possible Futures>, 'course_contact': '', 'files': '<<queryset of lms_tales.TalesCourseFile>>', 'first_step': <TalesStep: Why do we need economic models?>, 'is_editor': False, 'object': <TalesCourse: Exploring Possible Futures>, 'talescourse': <TalesCourse: Exploring Possible Futures>, 'view': <lms_tales.views.course_views.CourseDetails object at 0x706c8fb43890>} {'block': <Block Node: main-content. Contents: [<TextNode: '\n <main id="main-conte'>, <Block Node: content. Contents: [<TextNode: '\n '>, <django.template.library.SimpleNode object at 0x706c8f841250>, <TextNode: '\n '>, <django.template.library.SimpleNode object at 0x706c8f842410>, <TextNode: '\n '>, <django.template.library.SimpleNode object at 0x706c8f843d50>, <TextNode: '\n <div style="'>, <Variable Node: MEDIA_URL>, <Variable Node: object.title_image>, <TextNode: "');\n ">, <Waffle node: 'show_language_warning'>, <TextNode: '\n '>, <Variable Node: object.title>, <TextNode: '</h1>\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n <div'>, <IfNode>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n <div'>, <WithNode>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <TextNode: '\n '>, <Waffle node: 'path_is_active'>, <TextNode: '\n '>, <TextNode: '\n <div'>]>, <TextNode: '\n'>]>} {'block': <Block Node: content. Contents: [<TextNode: '\n '>, <django.template.library.SimpleNode object at 0x706c8f841250>, <TextNode: '\n '>, <django.template.library.SimpleNode object at 0x706c8f842410>, <TextNode: '\n '>, <django.template.library.SimpleNode object at 0x706c8f843d50>, <TextNode: '\n <div style="'>, <Variable Node: MEDIA_URL>, <Variable Node: object.title_image>, <TextNode: "');\n ">, <Waffle node: 'show_language_warning'>, <TextNode: '\n '>, <Variable Node: object.title>, <TextNode: '</h1>\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n <div'>, <IfNode>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n <div'>, <WithNode>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <TextNode: '\n '>, <Waffle node: 'path_is_active'>, <TextNode: '\n '>, <TextNode: '\n <div'>]>, 'can_add': False, 'can_change': False, 'can_delete': False} {'objects': '<<multilingualqueryset of lms_tales.TalesAuthor>>'} {'author': <TalesAuthor: Prof. Dr. Hannes Weigt {.footnote-title} Professor for energy economics at the [Department of Energy Economics](https://wwz.unibas.ch/en/faculty/people-and-areas/weigt-hannes-energy-economics/){:target=“_blank”}. Research interests include: Market Modeling and Electricity Market Design, Renewable Energies and Environmental Policies, Investment and Incentives in Network Industries, Competition Policy and Regulation.>, 'forloop': {'counter': 2, 'counter0': 1, 'first': False, 'last': True, 'parentloop': {}, 'revcounter': 1, 'revcounter0': 0}} {'object': <TalesAuthor: Prof. Dr. Frank Krysiak {.footnote-title} Professor of environmental economics at the [Department of Environmental Economics](https://wwz.unibas.ch/en/faculty/people-and-areas/krysiak-frank-environmental-economics/){:target=“_blank”}. Research interests include the long-term impacts of environmental politics and economic theories of sustainability.>, 'thumb': <ImageCacheFile: CACHE/images/exploring-possible-futures/Krysiak2/7d1c7b8b271ca1dfd92a0e9132397e92.jpg>}
- htmx/course-author-detail.html
- /app/project/lms_tales/templates/htmx/course-author-detail.html
-
Context zeigen
{'False': False, 'None': None, 'True': True} {'CI_COMMIT_SHORT_SHA': '0809bd77', 'CI_COMMIT_TAG': '', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'DEPLOY_ENV': 'staging', 'LANGUAGES': '<<languages>>', 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'fr', 'MEDIA_URL': '/media/', 'RELEASE_NAME': '', 'STATIC_URL': '/static/', 'TIME_ZONE': 'Europe/Zurich', 'csrf_token': '<SimpleLazyObject: ' "'gqTqi9ndaaUtywzaDn9HFXd7V6GoX1emlP7CTozbq9mC8psSwYMEHYZ1OKSIgN7t'>", 'messages': <FallbackStorage: request=<ASGIRequest: GET '/fr/exploring-possible-futures-44/'>>, 'perms': PermWrapper(<SimpleLazyObject: <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x706c8ffd5fd0>>>), 'request': '<<request>>', 'user': '<SimpleLazyObject: <SimpleLazyObject: ' '<django.contrib.auth.models.AnonymousUser object at ' '0x706c8ffd5fd0>>>'} {'active_courseruns': [], 'active_language_available': False, 'available_languages': [('en', 'Englisch')], 'course': <TalesCourse: Exploring Possible Futures>, 'course_contact': '', 'files': '<<queryset of lms_tales.TalesCourseFile>>', 'first_step': <TalesStep: Why do we need economic models?>, 'is_editor': False, 'object': <TalesCourse: Exploring Possible Futures>, 'talescourse': <TalesCourse: Exploring Possible Futures>, 'view': <lms_tales.views.course_views.CourseDetails object at 0x706c8fb43890>} {'block': <Block Node: main-content. Contents: [<TextNode: '\n <main id="main-conte'>, <Block Node: content. Contents: [<TextNode: '\n '>, <django.template.library.SimpleNode object at 0x706c8f841250>, <TextNode: '\n '>, <django.template.library.SimpleNode object at 0x706c8f842410>, <TextNode: '\n '>, <django.template.library.SimpleNode object at 0x706c8f843d50>, <TextNode: '\n <div style="'>, <Variable Node: MEDIA_URL>, <Variable Node: object.title_image>, <TextNode: "');\n ">, <Waffle node: 'show_language_warning'>, <TextNode: '\n '>, <Variable Node: object.title>, <TextNode: '</h1>\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n <div'>, <IfNode>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n <div'>, <WithNode>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <TextNode: '\n '>, <Waffle node: 'path_is_active'>, <TextNode: '\n '>, <TextNode: '\n <div'>]>, <TextNode: '\n'>]>} {'block': <Block Node: content. Contents: [<TextNode: '\n '>, <django.template.library.SimpleNode object at 0x706c8f841250>, <TextNode: '\n '>, <django.template.library.SimpleNode object at 0x706c8f842410>, <TextNode: '\n '>, <django.template.library.SimpleNode object at 0x706c8f843d50>, <TextNode: '\n <div style="'>, <Variable Node: MEDIA_URL>, <Variable Node: object.title_image>, <TextNode: "');\n ">, <Waffle node: 'show_language_warning'>, <TextNode: '\n '>, <Variable Node: object.title>, <TextNode: '</h1>\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n <div'>, <IfNode>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n <div'>, <WithNode>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <TextNode: '\n '>, <TextNode: '\n '>, <Waffle node: 'path_is_active'>, <TextNode: '\n '>, <TextNode: '\n <div'>]>, 'can_add': False, 'can_change': False, 'can_delete': False} {'objects': '<<multilingualqueryset of lms_tales.TalesAuthor>>'} {'author': <TalesAuthor: Prof. Dr. Hannes Weigt {.footnote-title} Professor for energy economics at the [Department of Energy Economics](https://wwz.unibas.ch/en/faculty/people-and-areas/weigt-hannes-energy-economics/){:target=“_blank”}. Research interests include: Market Modeling and Electricity Market Design, Renewable Energies and Environmental Policies, Investment and Incentives in Network Industries, Competition Policy and Regulation.>, 'forloop': {'counter': 2, 'counter0': 1, 'first': False, 'last': True, 'parentloop': {}, 'revcounter': 1, 'revcounter0': 0}} {'object': <TalesAuthor: Prof. Dr. Hannes Weigt {.footnote-title} Professor for energy economics at the [Department of Energy Economics](https://wwz.unibas.ch/en/faculty/people-and-areas/weigt-hannes-energy-economics/){:target=“_blank”}. Research interests include: Market Modeling and Electricity Market Design, Renewable Energies and Environmental Policies, Investment and Incentives in Network Industries, Competition Policy and Regulation.>, 'thumb': <ImageCacheFile: CACHE/images/exploring-possible-futures/weight2/9158a34e12befb43a0ec52c4f25e0a34.jpg>}
- step/step_home.html
- /app/project/lms_tales/templates/step/step_home.html
-
Context zeigen
{'False': False, 'None': None, 'True': True} {'CI_COMMIT_SHORT_SHA': '0809bd77', 'CI_COMMIT_TAG': '', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'DEPLOY_ENV': 'staging', 'LANGUAGES': '<<languages>>', 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'de', 'MEDIA_URL': '/media/', 'RELEASE_NAME': '', 'STATIC_URL': '/static/', 'TIME_ZONE': 'Europe/Zurich', 'csrf_token': '<SimpleLazyObject: ' "'iBU5DHqM28WnHfJ3BGHWRACFVqrLxH5gD1Rdy5jstcIBx351bUYOLE88Zmoe5Kpx'>", 'messages': <FallbackStorage: request=<ASGIRequest: GET '/de/exploring-possible-futures-44/firm-perspective-227/reflection-feedback-from-policy-to-consumer-demand-1285'>>, 'perms': PermWrapper(<SimpleLazyObject: <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x706c8fa3ad90>>>), 'request': '<<request>>', 'user': '<SimpleLazyObject: <SimpleLazyObject: ' '<django.contrib.auth.models.AnonymousUser object at ' '0x706c8fa3ad90>>>'} {'active_courseruns': [], 'active_courserunsteps': [], 'active_language_available': False, 'available_languages': [('en', 'Englisch')], 'course': <TalesCourse: Exploring Possible Futures>, 'course_contact': '', 'files': '<<queryset of lms_tales.TalesStepFileNew>>', 'is_editor': False, 'object': <TalesStep: Reflection: Feedback from policy to consumer demand>, 'talesstep': <TalesStep: Reflection: Feedback from policy to consumer demand>, 'view': <lms_tales.views.step_views.StepDetails object at 0x706c9579bed0>}
- lms_tales_base.html
- /app/project/templates/lms_tales_base.html
-
Context zeigen
{'False': False, 'None': None, 'True': True} {'CI_COMMIT_SHORT_SHA': '0809bd77', 'CI_COMMIT_TAG': '', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'DEPLOY_ENV': 'staging', 'LANGUAGES': '<<languages>>', 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'de', 'MEDIA_URL': '/media/', 'RELEASE_NAME': '', 'STATIC_URL': '/static/', 'TIME_ZONE': 'Europe/Zurich', 'csrf_token': '<SimpleLazyObject: ' "'iBU5DHqM28WnHfJ3BGHWRACFVqrLxH5gD1Rdy5jstcIBx351bUYOLE88Zmoe5Kpx'>", 'messages': <FallbackStorage: request=<ASGIRequest: GET '/de/exploring-possible-futures-44/firm-perspective-227/reflection-feedback-from-policy-to-consumer-demand-1285'>>, 'perms': PermWrapper(<SimpleLazyObject: <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x706c8fa3ad90>>>), 'request': '<<request>>', 'user': '<SimpleLazyObject: <SimpleLazyObject: ' '<django.contrib.auth.models.AnonymousUser object at ' '0x706c8fa3ad90>>>'} {'active_courseruns': [], 'active_courserunsteps': [], 'active_language_available': False, 'available_languages': [('en', 'Englisch')], 'course': <TalesCourse: Exploring Possible Futures>, 'course_contact': '', 'files': '<<queryset of lms_tales.TalesStepFileNew>>', 'is_editor': False, 'object': <TalesStep: Reflection: Feedback from policy to consumer demand>, 'talesstep': <TalesStep: Reflection: Feedback from policy to consumer demand>, 'view': <lms_tales.views.step_views.StepDetails object at 0x706c9579bed0>}
- base.html
- /app/project/templates/base.html
-
Context zeigen
{'False': False, 'None': None, 'True': True} {'CI_COMMIT_SHORT_SHA': '0809bd77', 'CI_COMMIT_TAG': '', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'DEPLOY_ENV': 'staging', 'LANGUAGES': '<<languages>>', 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'de', 'MEDIA_URL': '/media/', 'RELEASE_NAME': '', 'STATIC_URL': '/static/', 'TIME_ZONE': 'Europe/Zurich', 'csrf_token': '<SimpleLazyObject: ' "'iBU5DHqM28WnHfJ3BGHWRACFVqrLxH5gD1Rdy5jstcIBx351bUYOLE88Zmoe5Kpx'>", 'messages': <FallbackStorage: request=<ASGIRequest: GET '/de/exploring-possible-futures-44/firm-perspective-227/reflection-feedback-from-policy-to-consumer-demand-1285'>>, 'perms': PermWrapper(<SimpleLazyObject: <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x706c8fa3ad90>>>), 'request': '<<request>>', 'user': '<SimpleLazyObject: <SimpleLazyObject: ' '<django.contrib.auth.models.AnonymousUser object at ' '0x706c8fa3ad90>>>'} {'active_courseruns': [], 'active_courserunsteps': [], 'active_language_available': False, 'available_languages': [('en', 'Englisch')], 'course': <TalesCourse: Exploring Possible Futures>, 'course_contact': '', 'files': '<<queryset of lms_tales.TalesStepFileNew>>', 'is_editor': False, 'object': <TalesStep: Reflection: Feedback from policy to consumer demand>, 'talesstep': <TalesStep: Reflection: Feedback from policy to consumer demand>, 'view': <lms_tales.views.step_views.StepDetails object at 0x706c9579bed0>}
- components/header.html
- /app/project/templates/components/header.html
-
Context zeigen
{'False': False, 'None': None, 'True': True} {'CI_COMMIT_SHORT_SHA': '0809bd77', 'CI_COMMIT_TAG': '', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'DEPLOY_ENV': 'staging', 'LANGUAGES': '<<languages>>', 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'de', 'MEDIA_URL': '/media/', 'RELEASE_NAME': '', 'STATIC_URL': '/static/', 'TIME_ZONE': 'Europe/Zurich', 'csrf_token': '<SimpleLazyObject: ' "'iBU5DHqM28WnHfJ3BGHWRACFVqrLxH5gD1Rdy5jstcIBx351bUYOLE88Zmoe5Kpx'>", 'messages': <FallbackStorage: request=<ASGIRequest: GET '/de/exploring-possible-futures-44/firm-perspective-227/reflection-feedback-from-policy-to-consumer-demand-1285'>>, 'perms': PermWrapper(<SimpleLazyObject: <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x706c8fa3ad90>>>), 'request': '<<request>>', 'user': '<SimpleLazyObject: <SimpleLazyObject: ' '<django.contrib.auth.models.AnonymousUser object at ' '0x706c8fa3ad90>>>'} {'active_courseruns': [], 'active_courserunsteps': [], 'active_language_available': False, 'available_languages': [('en', 'Englisch')], 'course': <TalesCourse: Exploring Possible Futures>, 'course_contact': '', 'files': '<<queryset of lms_tales.TalesStepFileNew>>', 'is_editor': False, 'object': <TalesStep: Reflection: Feedback from policy to consumer demand>, 'talesstep': <TalesStep: Reflection: Feedback from policy to consumer demand>, 'view': <lms_tales.views.step_views.StepDetails object at 0x706c9579bed0>} {'block': <Block Node: header. Contents: [<TextNode: '\n '>, <IncludeNode: template=<FilterExpression '"components/header.html"'>>, <TextNode: '\n '>]>}
- components/sidebar-navigation.html
- /app/project/templates/components/sidebar-navigation.html
-
Context zeigen
{'False': False, 'None': None, 'True': True} {'CI_COMMIT_SHORT_SHA': '0809bd77', 'CI_COMMIT_TAG': '', 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'DEPLOY_ENV': 'staging', 'LANGUAGES': '<<languages>>', 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'de', 'MEDIA_URL': '/media/', 'RELEASE_NAME': '', 'STATIC_URL': '/static/', 'TIME_ZONE': 'Europe/Zurich', 'csrf_token': '<SimpleLazyObject: ' "'iBU5DHqM28WnHfJ3BGHWRACFVqrLxH5gD1Rdy5jstcIBx351bUYOLE88Zmoe5Kpx'>", 'messages': <FallbackStorage: request=<ASGIRequest: GET '/de/exploring-possible-futures-44/firm-perspective-227/reflection-feedback-from-policy-to-consumer-demand-1285'>>, 'perms': PermWrapper(<SimpleLazyObject: <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x706c8fa3ad90>>>), 'request': '<<request>>', 'user': '<SimpleLazyObject: <SimpleLazyObject: ' '<django.contrib.auth.models.AnonymousUser object at ' '0x706c8fa3ad90>>>'} {'active_courseruns': [], 'active_courserunsteps': [], 'active_language_available': False, 'available_languages': [('en', 'Englisch')], 'course': <TalesCourse: Exploring Possible Futures>, 'course_contact': '', 'files': '<<queryset of lms_tales.TalesStepFileNew>>', 'is_editor': False, 'object': <TalesStep: Reflection: Feedback from policy to consumer demand>, 'talesstep': <TalesStep: Reflection: Feedback from policy to consumer demand>, 'view': <lms_tales.views.step_views.StepDetails object at 0x706c9579bed0>} {'block': <Block Node: sidebar-nav. Contents: [<TextNode: '\n <nav id="sid'>, <django.template.library.SimpleNode object at 0x706c8fa1c390>, <TextNode: '>\n '>, <django.templatetags.i18n.TranslateNode object at 0x706c8fdf6f50>, <TextNode: '</span>\n '>, <IfNode>, <TextNode: '\n '>, <django.template.library.SimpleNode object at 0x706c8fd06ed0>, <TextNode: '>\n '>, <django.templatetags.i18n.TranslateNode object at 0x706c8ff0bdd0>, <TextNode: '</span>\n '>, <Block Node: navigation. Contents: [<TextNode: '\n '>]>, <TextNode: '\n </div>\n '>]>} {'block': <Block Node: navigation. Contents: [<TextNode: '\n '>, <IncludeNode: template=<FilterExpression '"components/sidebar-navigation.html"'>>, <TextNode: '\n'>]>}
Context-Prozessoren
-
Cache-Aufrufe von 1 Backend
Zusammenfassung
Aufrufe gesamt | Zeit gesamt | Cache erfolgreich | Cache verfehlt |
---|---|---|---|
1 | 2,9761018231511116 ms | 61 | 0 |
Befehle
add | get | set | get_or_set | touch | delete | clear | get_many | set_many | delete_many | has_key | incr | decr | incr_version | decr_version |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Aufrufe
Zeit (ms) | Typ | Argumente | Schlüsselwort-Argumente | Backend | |
---|---|---|---|---|---|
2,9761 | get_many | (dict_keys(['b5ac959681ff06eff632d25a5961a4d3cad09b42', '542c27005f4e84288827ce70a7d49bc73324a5e7', '887f8247d0ff979264c73b069f790024b2aa98e1', 'a2cec6efb2cb51d9fcdc73ec65d0d02848d3205f', 'af167bf678e72a9b2a64d8869d420b8d25e96148', 'f2b266a5acd7f191551fca80dea8475d456a300c', 'e5890f0f95e54c95fc7d85ffd3cd8f5079a384eb', '7d22fa9ec7aaf50b239b17bb4529f27be72f4b3d', 'fab86eaeb6f68c1bd14e3c42d6a32fc63fe5c10b', '1671d58e08fb6227d160e4add3baac34f778006f', '5634047d837b3106d3997f0611a298a16f6754cb', '38c0c9db04f183fb89086db2a3a02d20d5c1cbda', '33cd0b10f8c2fd53802b0948820b8b58da6bb27c', 'dbdc4e6f3de4931fbb7e39044291d87c49a581a7', 'bf555e2c224baeeac5838ee69c053900ce037b1d', '452aaa2adbf5d826d715538ebfd87013a599bacd', '5ef73f3d610667d7836abd847979ad8d02582140', '28b4f1c78186b497fc0611b76d5609a36a170804', 'acd1c2a120952e0445e89d8a2cc8faa99cc73454', '3fdb5b63faddfa01f5ebd09a89b74c9b3ec742bf', 'bc41695a90f568da6f9c44d14dbb30130bea76db', '6d6bdc7046f6d1410bd41d09cd570831af97fd31', '2288e6f142e998339c6d4985913358f76533a29e', 'f6e1a4d48790db63f8cb8c5653192a74ca00d34a', 'e19dd8b0e8a705c5914b55bbeb94d01f20e5368e', 'bf2a5aa392ac965fc14b9cc5fc8fcce588b2cf57', '9de26d60cec57eaab1ec19a62cf772073ae0e30f', '138549f5508bbba7283d6a0625e51c589d845e8f', '4f1f0b4dfbd30463b5587753e6f3e6ca21ddbf60', 'd890e5bc0b77c02793036efa76f50a25770a52a7', 'd00779073776b2287204a6fa5336494275fc73d5', '76e323efd8711853e13c9f7cf976845908364eb2', 'e3a5db5a670ad803efb866441f33de58309be2e2', '312c357d2eed306581bb334378808fbccf7019ea', 'd144abeb0db81d5dfea390a27c6d616aa1783141', 'b33158a576dd24b41063563867ce3f9044eb1acf', 'a78875b90f65061214a7b7eaa1a66176310060a1', 'd1accdb7a5e2af4fd7d0fc7e34b048f555cd65a0', '0b7593abe25ebbf222c98d71b199a17877e17478', 'da8bff0e0d25742e869a69b7508c37ccde5f8f33', '0098dff618e4e4ce8b226fb3dcd5d9042e69eb75', '8e3f73e6feaebee5ffbc4479f566917f08b4bbca', '5c50c6b3292213266ec6601a46b9ff857efec10a', '9ba11033f2e0b0478fa7ea0cfcde90c7ea880b1b', '810de96c2cc412e55eb18a19206c9b4f4879ec68', 'da75293c9ac4e9ae833da9fecd1ab668d629ce49', 'e4392949c2513e35c4d436a230e913efc13e4556', '9a3409722cd89bb29bc78c6bd4bca2cc2aad3e96', '5bd1ef7c64b457cbb725c42d97969db3ebe85f66', 'f3d241856fbbba355385868203e06010b65b882e', '1511f7c2f0ac6c43b58dfa27858c3d8561280f80', 'e2a6b84fc2a64f0ca59dd6e95fe6e1a5f3850ad5', 'b72f66480a030f14a954ea7eeb482d64fa1da084', '9e3a2b98ae55fa975425fa81a4e6e13342147b8a', '0e90ed3afbea5b3254d013a2b352642aaa2ce984', '2b2eb1f58e7ba0ac1ae04f9e9c95bde41f64e3fc', 'f38ac9d1db097d95b5062273e0a941d2da616361', 'cf84cec99a10af4507238b31bfce2171063a0c1d', 'c9b253ceb06244b30c24377ae68ae44353b4b3c4', '946a725506b18b4afe14d273540101238984908d', 'd34b8ed7c3bb0d3a712a5e42065744014bfe1542']),) | {} | <django_redis.cache.RedisCache object at 0x706cb8b22990> | |
/usr/local/lib/python3.11/site-packages/sentry_sdk/integrations/threading.py in run(101) return _run_old_run_func() /usr/local/lib/python3.11/site-packages/sentry_sdk/integrations/threading.py in _run_old_run_func(94) return old_run_func(self, *a, **kw) /usr/local/lib/python3.11/concurrent/futures/thread.py in _worker(83) work_item.run() /usr/local/lib/python3.11/concurrent/futures/thread.py in run(58) result = self.fn(*self.args, **self.kwargs) /usr/local/lib/python3.11/site-packages/asgiref/sync.py in thread_handler(522) return func(*args, **kwargs) /usr/local/lib/python3.11/site-packages/sentry_sdk/integrations/django/middleware.py in __call__(177) return f(*args, **kwargs) /usr/local/lib/python3.11/site-packages/corsheaders/middleware.py in __call__(56) result = self.get_response(request) /usr/local/lib/python3.11/site-packages/sentry_sdk/integrations/django/middleware.py in __call__(177) return f(*args, **kwargs) /usr/local/lib/python3.11/site-packages/sentry_sdk/integrations/django/middleware.py in __call__(177) return f(*args, **kwargs) /usr/local/lib/python3.11/site-packages/sentry_sdk/integrations/django/middleware.py in __call__(177) return f(*args, **kwargs) /usr/local/lib/python3.11/site-packages/sentry_sdk/integrations/django/middleware.py in __call__(177) return f(*args, **kwargs) /usr/local/lib/python3.11/site-packages/sentry_sdk/integrations/django/middleware.py in __call__(177) return f(*args, **kwargs) /app/project/lms_tales/middleware.py in middleware(32) response = get_response(request) /usr/local/lib/python3.11/site-packages/sentry_sdk/integrations/django/middleware.py in __call__(177) return f(*args, **kwargs) /usr/local/lib/python3.11/site-packages/sentry_sdk/integrations/django/middleware.py in __call__(177) return f(*args, **kwargs) /usr/local/lib/python3.11/site-packages/sentry_sdk/integrations/django/middleware.py in __call__(177) return f(*args, **kwargs) /usr/local/lib/python3.11/site-packages/allauth/account/middleware.py in middleware(36) response = get_response(request) /usr/local/lib/python3.11/site-packages/sentry_sdk/integrations/django/middleware.py in __call__(177) return f(*args, **kwargs) /usr/local/lib/python3.11/site-packages/sentry_sdk/integrations/django/middleware.py in __call__(177) return f(*args, **kwargs) /usr/local/lib/python3.11/site-packages/sentry_sdk/integrations/django/middleware.py in __call__(177) return f(*args, **kwargs) /usr/local/lib/python3.11/site-packages/sentry_sdk/integrations/django/middleware.py in __call__(177) return f(*args, **kwargs) /usr/local/lib/python3.11/site-packages/simple_history/middleware.py in middleware(41) return get_response(request) /usr/local/lib/python3.11/site-packages/sentry_sdk/integrations/django/middleware.py in __call__(177) return f(*args, **kwargs) /usr/local/lib/python3.11/site-packages/sentry_sdk/integrations/django/middleware.py in __call__(177) return f(*args, **kwargs) /usr/local/lib/python3.11/site-packages/sentry_sdk/integrations/django/middleware.py in __call__(177) return f(*args, **kwargs) /usr/local/lib/python3.11/site-packages/django_htmx/middleware.py in __call__(43) return self.get_response(request) /usr/local/lib/python3.11/site-packages/sentry_sdk/integrations/django/middleware.py in __call__(177) return f(*args, **kwargs) /usr/local/lib/python3.11/site-packages/sentry_sdk/integrations/django/middleware.py in __call__(177) return f(*args, **kwargs) /app/project/lms_tales/middleware.py in __call__(168) response = self.get_response(request) /usr/local/lib/python3.11/site-packages/sentry_sdk/integrations/django/middleware.py in __call__(177) return f(*args, **kwargs) /usr/local/lib/python3.11/site-packages/cachalot/panels.py in process_request(40) self.collect_invalidations() /usr/local/lib/python3.11/site-packages/cachalot/panels.py in collect_invalidations(52) for cache_key, timestamp in cache.get_many( |
Cachalot
Database 'default'
Application | Model | Last invalidation |
---|---|---|
django_q | Failure | 11 Stunden, 4 Minuten |
django_q | Schedule | 11 Stunden, 4 Minuten |
reporting | Report | 13 Stunden, 29 Minuten |
lms_tales | CourseMetrics | 21 Stunden, 34 Minuten |
search | FulltextSearchModel | 22 Stunden, 34 Minuten |
lms_roles | CourseRole | 1 Monat, 3 Wochen |
search | TrigramSearchModel | 1 Monat, 3 Wochen |
startpage | SliderItem | 1 Monat, 3 Wochen |
startpage | CategoryCourse | 1 Monat, 3 Wochen |
tags | Category | 1 Monat, 3 Wochen |
tags | Tag | 1 Monat, 3 Wochen |
lms_static_texts | StaticText | 1 Monat, 3 Wochen |
lms_static_texts | HistoricalStaticText | 1 Monat, 3 Wochen |
lms_comments | Comment | 1 Monat, 3 Wochen |
lms_comments | Reply | 1 Monat, 3 Wochen |
lms_comments | Reaction | 1 Monat, 3 Wochen |
lms_comments | Flag | 1 Monat, 3 Wochen |
lms_tales | TalesStep | 1 Monat, 3 Wochen |
lms_tales | TalesStepFileNew | 1 Monat, 3 Wochen |
lms_tales | TalesStepFile | 1 Monat, 3 Wochen |
lms_tales | TalesCourseFile | 1 Monat, 3 Wochen |
lms_tales | TalesChapter | 1 Monat, 3 Wochen |
lms_tales | TalesCourse | 1 Monat, 3 Wochen |
lms_tales | TalesAuthor | 1 Monat, 3 Wochen |
lms_tales | TalesPartner | 1 Monat, 3 Wochen |
lms_tales | TalesGlossaryItem | 1 Monat, 3 Wochen |
lms_tales | TalesPath | 1 Monat, 3 Wochen |
lms_tales | TalesPathStep | 1 Monat, 3 Wochen |
lms_tales | TalesCourseRun | 1 Monat, 3 Wochen |
lms_tales | TalesCourseRunStep | 1 Monat, 3 Wochen |
lms_tales | ScheduledMessage | 1 Monat, 3 Wochen |
lms_tales | HistoricalTalesStep | 1 Monat, 3 Wochen |
lms_tales | HistoricalTalesStepFile | 1 Monat, 3 Wochen |
lms_tales | HistoricalTalesChapter | 1 Monat, 3 Wochen |
lms_tales | HistoricalTalesCourse | 1 Monat, 3 Wochen |
lms_tales | HistoricalTalesPath | 1 Monat, 3 Wochen |
lms_base | GlossaryMixin | 1 Monat, 3 Wochen |
lms_base | GlossaryItemMixin | 1 Monat, 3 Wochen |
users | User | 1 Monat, 3 Wochen |
users | UserSettings | 1 Monat, 3 Wochen |
auth | Permission | 1 Monat, 3 Wochen |
auth | Group | 1 Monat, 3 Wochen |
contenttypes | ContentType | 1 Monat, 3 Wochen |
sessions | Session | 1 Monat, 3 Wochen |
sites | Site | 1 Monat, 3 Wochen |
flatpages | FlatPage | 1 Monat, 3 Wochen |
admin | LogEntry | 1 Monat, 3 Wochen |
redirects | Redirect | 1 Monat, 3 Wochen |
account | EmailAddress | 1 Monat, 3 Wochen |
account | EmailConfirmation | 1 Monat, 3 Wochen |
socialaccount | SocialApp | 1 Monat, 3 Wochen |
socialaccount | SocialAccount | 1 Monat, 3 Wochen |
socialaccount | SocialToken | 1 Monat, 3 Wochen |
waffle | Flag | 1 Monat, 3 Wochen |
waffle | Switch | 1 Monat, 3 Wochen |
waffle | Sample | 1 Monat, 3 Wochen |
tos | TermsOfService | 1 Monat, 3 Wochen |
tos | UserAgreement | 1 Monat, 3 Wochen |
impersonate | ImpersonationLog | 1 Monat, 3 Wochen |
django_q | OrmQ | 1 Monat, 3 Wochen |
notifications | Notification | 1 Monat, 3 Wochen |
Signale
Signal | Empfänger |
---|---|
class_prepared | StatusField.prepare_class, add_status_query_managers, add_timeframed_query_manager, StatusField.prepare_class, StatusField.prepare_class, StatusField.prepare_class, StatusField.prepare_class, StatusField.prepare_class, StatusField.prepare_class, StatusField.prepare_class, StatusField.prepare_class, StatusField.prepare_class, StatusField.prepare_class |
connection_created | |
got_request_exception | _got_request_exception |
m2m_changed | flag_membership_changed, flag_membership_changed |
post_delete | HistoricalRecords.post_delete, HistoricalRecords.post_delete, HistoricalRecords.post_delete, HistoricalRecords.post_delete, HistoricalRecords.post_delete, HistoricalRecords.post_delete, delete_search_index, delete_search_index |
post_init | ModelSignalRouter.post_init_receiver, MonitorField._save_initial, MonitorField._save_initial, MonitorField._save_initial, MonitorField._save_initial, ImageField.update_dimension_fields, MonitorField._save_initial, ImageField.update_dimension_fields, MonitorField._save_initial, MonitorField._save_initial, ImageField.update_dimension_fields, ImageField.update_dimension_fields, ImageField.update_dimension_fields, MonitorField._save_initial, delete_mt_init, delete_mt_init, delete_mt_init, delete_mt_init, delete_mt_init, delete_mt_init, delete_mt_init, delete_mt_init, delete_mt_init, MonitorField._save_initial, MonitorField._save_initial, MonitorField._save_initial, delete_mt_init, delete_mt_init, delete_mt_init |
post_migrate | create_permissions, create_contenttypes, create_default_site, _invalidate_on_migration |
post_save | ModelSignalRouter.post_save_receiver, HistoricalRecords.post_save, HistoricalRecords.post_save, HistoricalRecords.post_save, HistoricalRecords.post_save, HistoricalRecords.post_save, HistoricalRecords.post_save, call_hook, create_user_settings, save_user_settings, update_search_index, update_search_index |
pre_delete | clear_site_cache |
pre_init | |
pre_migrate | inject_rename_contenttypes_operations |
pre_save | clear_site_cache |
request_finished | close_old_connections, close_caches, reset_urlconf |
request_started | reset_queries, close_old_connections |
setting_changed | reset_cache, reload_settings, clear_cache_handlers, update_installed_apps, update_connections_time_zone, clear_routers_cache, reset_template_engines, storages_changed, clear_serializers_cache, language_changed, localize_settings_changed, file_storage_changed, complex_setting_changed, root_urlconf_changed, static_storage_changed, static_finders_changed, auth_password_validators_changed, user_model_swapped, update_toolbar_config, reset_hashers, update_level_tags, clear_caches, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties, StaticFilesStorage._clear_cached_properties, FileSystemStorage._clear_cached_properties |