Mercurial > piecrust2
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 |