comparison mercurial/hgweb/request.py @ 36808: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
36807:1e2194e0ef62 36808: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.