ui: add environ property to access os.environ or wsgirequest.environ
authorSune Foldager <cryo@cyanite.org>
Thu, 19 Nov 2009 10:32:33 +0100
changeset 9887 38170eeed18c
parent 9886 56af3f240a22
child 9888 510122bb3c7f
ui: add environ property to access os.environ or wsgirequest.environ The property returns os.environ by default, and is propagated by ui.copy. During hgweb processing, ui.environ is set to the proper WSGI-request environment, as contained in wsgirequest.environ. For CGI, this is the same as os.environ. The property is meant to be read-only, as with os.environ (generally).
mercurial/hgweb/hgweb_mod.py
mercurial/ui.py
--- a/mercurial/hgweb/hgweb_mod.py	Sun Nov 08 00:27:15 2009 +0100
+++ b/mercurial/hgweb/hgweb_mod.py	Thu Nov 19 10:32:33 2009 +0100
@@ -54,7 +54,9 @@
         return self.repo.ui.configlist(section, name, default,
                                        untrusted=untrusted)
 
-    def refresh(self):
+    def refresh(self, request=None):
+        if request:
+            self.ui.environ = request.environ
         mtime = get_mtime(self.repo.root)
         if mtime != self.mtime:
             self.mtime = mtime
@@ -80,7 +82,7 @@
 
     def run_wsgi(self, req):
 
-        self.refresh()
+        self.refresh(req)
 
         # work with CGI variables to create coherent structure
         # use SCRIPT_NAME, PATH_INFO and QUERY_STRING as well as our REPO_NAME
--- a/mercurial/ui.py	Sun Nov 08 00:27:15 2009 +0100
+++ b/mercurial/ui.py	Thu Nov 19 10:32:33 2009 +0100
@@ -29,8 +29,11 @@
             self._ocfg = src._ocfg.copy()
             self._trustusers = src._trustusers.copy()
             self._trustgroups = src._trustgroups.copy()
+            self.environ = src.environ
             self.fixconfig()
         else:
+            # shared read-only environment
+            self.environ = os.environ
             # we always trust global config files
             for f in util.rcpath():
                 self.readconfig(f, trust=True)