changeset 963:a90541509a41

admin: Fix the site preview by editing the WSGI environment.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 07 Oct 2017 12:30:49 -0700
parents 96ea68c36a74
children d65838abbd90
files piecrust/admin/views/preview.py
diffstat 1 files changed, 12 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/piecrust/admin/views/preview.py	Sat Oct 07 12:17:29 2017 -0700
+++ b/piecrust/admin/views/preview.py	Sat Oct 07 12:30:49 2017 -0700
@@ -1,4 +1,4 @@
-from flask import g, make_response
+from flask import g, request, make_response
 from flask.ext.login import login_required
 from piecrust.serving.server import PieCrustServer
 from ..blueprint import foodtruck_bp
@@ -15,6 +15,16 @@
 def preview_page(url):
     site = g.site
     pcappfac = site.piecrust_factory
-    server = PieCrustServer(pcappfac, root_url=site.make_url('/preview/'))
+    root_url = request.script_root or ''
+    root_url += site.make_url('/preview/')
+    server = PieCrustServer(pcappfac, root_url=root_url)
+
+    # Patch the WSGI environment for the underlying PieCrust server,
+    # because it doesn't generally handle stuff being under a different
+    # sub folder of the domain.
+    script_name = request.environ['SCRIPT_NAME']
+    request.environ['SCRIPT_NAME'] = ''
+    request.environ['PATH_INFO'] = script_name + request.environ['PATH_INFO']
+
     return make_response(server)