hgweb: expose repo name on parsedrequest
authorGregory Szorc <gregory.szorc@gmail.com>
Sat, 10 Mar 2018 14:06:58 -0800
changeset 36868 8ddb5c354906
parent 36867 a755fd3b7146
child 36869 7ad6a275316f
hgweb: expose repo name on parsedrequest I'm not a fan of doing this because I want to find a better solution to the REPO_NAME hack. But this change gets us a few steps closer to eliminating use of wsgirequest. We can worry about fixing REPO_NAME once wsgirequest is gone. Differential Revision: https://phab.mercurial-scm.org/D2784
mercurial/hgweb/hgweb_mod.py
mercurial/hgweb/request.py
--- a/mercurial/hgweb/hgweb_mod.py	Sat Mar 10 14:00:40 2018 -0800
+++ b/mercurial/hgweb/hgweb_mod.py	Sat Mar 10 14:06:58 2018 -0800
@@ -141,7 +141,7 @@
             if typ in allowed or self.configbool('web', 'allow%s' % typ):
                 yield {'type': typ, 'extension': spec[2], 'node': nodeid}
 
-    def templater(self, wsgireq, req):
+    def templater(self, req):
         # determine scheme, port and server name
         # this is needed to create absolute urls
         logourl = self.config('web', 'logourl')
@@ -159,7 +159,7 @@
         # figure out which style to use
 
         vars = {}
-        styles, (style, mapfile) = getstyle(wsgireq.req, self.config,
+        styles, (style, mapfile) = getstyle(req, self.config,
                                             self.templatepath)
         if style == styles[0]:
             vars['style'] = style
@@ -168,8 +168,9 @@
 
         if not self.reponame:
             self.reponame = (self.config('web', 'name', '')
-                             or wsgireq.env.get('REPO_NAME')
-                             or req.apppath or self.repo.root)
+                             or req.reponame
+                             or req.apppath
+                             or self.repo.root)
 
         def websubfilter(text):
             return templatefilters.websub(text, self.websubtable)
@@ -372,7 +373,7 @@
         # process the web interface request
 
         try:
-            tmpl = rctx.templater(wsgireq, req)
+            tmpl = rctx.templater(req)
             ctype = tmpl('mimetype', encoding=encoding.encoding)
             ctype = templater.stringify(ctype)
 
--- a/mercurial/hgweb/request.py	Sat Mar 10 14:00:40 2018 -0800
+++ b/mercurial/hgweb/request.py	Sat Mar 10 14:06:58 2018 -0800
@@ -144,6 +144,8 @@
     # Whether there is a path component to this request. This can be true
     # when ``dispatchpath`` is empty due to REPO_NAME muckery.
     havepathinfo = attr.ib()
+    # The name of the repository being accessed.
+    reponame = attr.ib()
     # Raw query string (part after "?" in URL).
     querystring = attr.ib()
     # multidict of query string parameters.
@@ -282,6 +284,7 @@
                          apppath=apppath,
                          dispatchparts=dispatchparts, dispatchpath=dispatchpath,
                          havepathinfo='PATH_INFO' in env,
+                         reponame=env.get('REPO_NAME'),
                          querystring=querystring,
                          qsparams=qsparams,
                          headers=headers,