mirror of
https://github.com/Crocmagnon/charasheet.git
synced 2024-11-05 14:23:53 +01:00
setup for preview mode with cookie to be picked by reverse proxy
This commit is contained in:
parent
defd369e96
commit
2b7fbc6c79
5 changed files with 47 additions and 1 deletions
|
@ -23,6 +23,7 @@
|
|||
<excludeFolder url="file://$MODULE_DIR$/.direnv" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/.pytest_cache" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/.ruff_cache" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/.venv" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="Python 3.11 (charasheet)" jdkType="Python SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
|
|
|
@ -1,5 +1,12 @@
|
|||
from django.conf import settings
|
||||
from django.core.handlers.wsgi import WSGIRequest
|
||||
|
||||
|
||||
def app(_):
|
||||
return settings.APP
|
||||
|
||||
|
||||
def preview(request: WSGIRequest):
|
||||
return {
|
||||
"preview_enabled": request.session.get("preview", False),
|
||||
}
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
from django.conf import settings
|
||||
from django.core.handlers.wsgi import WSGIRequest
|
||||
from django.http import HttpResponse
|
||||
|
||||
|
||||
def debug_toolbar_bypass_internal_ips(_) -> bool:
|
||||
|
@ -9,3 +11,31 @@ def debug_toolbar_bypass_internal_ips(_) -> bool:
|
|||
This is impossible to predict in a docker/k8s environment so we bypass this check.
|
||||
"""
|
||||
return settings.DEBUG_TOOLBAR
|
||||
|
||||
|
||||
class PreviewMiddleware:
|
||||
def __init__(self, get_response):
|
||||
self.get_response = get_response
|
||||
|
||||
def __call__(self, request: WSGIRequest):
|
||||
enable_preview = "enable_preview" in request.GET
|
||||
disable_preview = "disable_preview" in request.GET
|
||||
|
||||
new_value = None
|
||||
|
||||
if enable_preview:
|
||||
new_value = True
|
||||
elif disable_preview:
|
||||
new_value = False
|
||||
|
||||
if new_value is not None:
|
||||
request.session["preview"] = new_value
|
||||
|
||||
response: HttpResponse = self.get_response(request)
|
||||
|
||||
if new_value is True:
|
||||
response.set_cookie("preview", "enabled")
|
||||
elif new_value is False:
|
||||
response.delete_cookie("preview")
|
||||
|
||||
return response
|
||||
|
|
|
@ -97,6 +97,7 @@ MIDDLEWARE = [
|
|||
"django.contrib.messages.middleware.MessageMiddleware",
|
||||
"django.middleware.clickjacking.XFrameOptionsMiddleware",
|
||||
"django_htmx.middleware.HtmxMiddleware",
|
||||
"charasheet.middleware.PreviewMiddleware",
|
||||
]
|
||||
if DEBUG_TOOLBAR:
|
||||
MIDDLEWARE.insert(0, "debug_toolbar.middleware.DebugToolbarMiddleware")
|
||||
|
@ -117,6 +118,7 @@ TEMPLATES = [
|
|||
"django.contrib.auth.context_processors.auth",
|
||||
"django.contrib.messages.context_processors.messages",
|
||||
"charasheet.context_processors.app",
|
||||
"charasheet.context_processors.preview",
|
||||
],
|
||||
},
|
||||
},
|
||||
|
|
|
@ -1,7 +1,13 @@
|
|||
<footer class="bg-light mt-auto">
|
||||
<div class="container text-muted pt-2 pb-2 d-flex justify-content-between">
|
||||
<span>
|
||||
Version : {{ build.describe }} • {{ build.date }}
|
||||
Version : {{ build.describe }}
|
||||
• {{ build.date }}
|
||||
{% if preview_enabled %}
|
||||
• <a class="text-muted" href="?disable_preview">Disable preview</a>
|
||||
{% else %}
|
||||
• <a class="text-muted" href="?enable_preview">Enable preview</a>
|
||||
{% endif %}
|
||||
</span>
|
||||
<div>
|
||||
<a href="https://github.com/Crocmagnon/charasheet" class="text-muted"><i class="fa-brands fa-github"></i></a>
|
||||
|
|
Loading…
Reference in a new issue