Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/hgweb/request.py @ 36816:0031e972ded2
hgweb: use the parsed application path directly
Previously, we assigned a custom system string with a trailing slash
to wsgirequest.url.
The addition of the trailing slash felt arbitrary and seems to go
against how things typically work in WSGI.
We also want our URLs to be bytes, not system strings.
And, assigning a custom attribute to wsgirequest felt wrong.
This commit fixes all those things by removing the trailing
slash from the app path, changing consumers to use that variable
and to use it without a trailing slash, and removing the custom
attribute from wsgirequest.
We preserve the trailing slash on {url}. Also, makebreadcrumb
strips the trailing slash. So no change to it was needed.
Differential Revision: https://phab.mercurial-scm.org/D2736
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Thu, 08 Mar 2018 15:08:20 -0800 |
parents | 69b2d0900cd7 |
children | 3c15b84ab66c |
comparison
equal
deleted
inserted
replaced
36815:1e2194e0ef62 | 36816:0031e972ded2 |
---|---|
144 # has the concept of "virtual" repositories. This is defined via REPO_NAME. | 144 # has the concept of "virtual" repositories. This is defined via REPO_NAME. |
145 # If REPO_NAME is defined, we append it to SCRIPT_NAME to form a new app | 145 # If REPO_NAME is defined, we append it to SCRIPT_NAME to form a new app |
146 # root. We also exclude its path components from PATH_INFO when resolving | 146 # root. We also exclude its path components from PATH_INFO when resolving |
147 # the dispatch path. | 147 # the dispatch path. |
148 | 148 |
149 # TODO the use of trailing slashes in apppath is arguably wrong. We need it | |
150 # to appease low-level parts of hgweb_mod for now. | |
151 apppath = env['SCRIPT_NAME'] | 149 apppath = env['SCRIPT_NAME'] |
152 if not apppath.endswith('/'): | |
153 apppath += '/' | |
154 | 150 |
155 if env.get('REPO_NAME'): | 151 if env.get('REPO_NAME'): |
156 apppath += env.get('REPO_NAME') + '/' | 152 if not apppath.endswith('/'): |
153 apppath += '/' | |
154 | |
155 apppath += env.get('REPO_NAME') | |
157 | 156 |
158 if 'PATH_INFO' in env: | 157 if 'PATH_INFO' in env: |
159 dispatchparts = env['PATH_INFO'].strip('/').split('/') | 158 dispatchparts = env['PATH_INFO'].strip('/').split('/') |
160 | 159 |
161 # Strip out repo parts. | 160 # Strip out repo parts. |