comparison piecrust/admin/views/preview.py @ 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 94fd4f07da83
children 0d699f04968c
comparison
equal deleted inserted replaced
962:96ea68c36a74 963:a90541509a41
1 from flask import g, make_response 1 from flask import g, request, make_response
2 from flask.ext.login import login_required 2 from flask.ext.login import login_required
3 from piecrust.serving.server import PieCrustServer 3 from piecrust.serving.server import PieCrustServer
4 from ..blueprint import foodtruck_bp 4 from ..blueprint import foodtruck_bp
5 5
6 6
13 @foodtruck_bp.route('/preview/<path:url>') 13 @foodtruck_bp.route('/preview/<path:url>')
14 @login_required 14 @login_required
15 def preview_page(url): 15 def preview_page(url):
16 site = g.site 16 site = g.site
17 pcappfac = site.piecrust_factory 17 pcappfac = site.piecrust_factory
18 server = PieCrustServer(pcappfac, root_url=site.make_url('/preview/')) 18 root_url = request.script_root or ''
19 root_url += site.make_url('/preview/')
20 server = PieCrustServer(pcappfac, root_url=root_url)
21
22 # Patch the WSGI environment for the underlying PieCrust server,
23 # because it doesn't generally handle stuff being under a different
24 # sub folder of the domain.
25 script_name = request.environ['SCRIPT_NAME']
26 request.environ['SCRIPT_NAME'] = ''
27 request.environ['PATH_INFO'] = script_name + request.environ['PATH_INFO']
28
19 return make_response(server) 29 return make_response(server)
20 30