chiark / gitweb /
Found in crybaby's working tree.
[chopwood] / cgi.py
diff --git a/cgi.py b/cgi.py
index 69b90386b36ae99638697643e737cc98eb8e11b6..6ad9e756c37efd49d6dd8fcad92b3ee16ab7716f 100644 (file)
--- a/cgi.py
+++ b/cgi.py
@@ -51,7 +51,11 @@ CONF.DEFAULTS.update(
 
   ## A (maybe relative) URL for static content.  By default this comes from
   ## the main script, but we hope that user agents cache it.
-  STATIC = _script_name + '/static')
+  STATIC = None)
+
+@CONF.hook
+def set_static():
+  if CFG.STATIC is None: CFG.STATIC = CFG.SCRIPT_NAME + '/static'
 
 ###--------------------------------------------------------------------------
 ### Escaping and encoding.
@@ -105,6 +109,7 @@ class HTTPOutput (O.FileOutput):
     """Constructor: initialize `headerp' flag."""
     super(HTTPOutput, me).__init__(*args, **kw)
     me.headerp = False
+    me.warnings = []
 
   def write(me, msg):
     """Output protocol: print a header if we've not written one already."""
@@ -126,6 +131,15 @@ class HTTPOutput (O.FileOutput):
     if METHOD == 'HEAD':
       HEADER_DONE()
 
+  def warn(me, msg):
+    """
+    Report a warning message.
+
+    The warning is stashed in a list where it can be retrieved using
+    `warnings'.
+    """
+    me.warnings.append(msg)
+
 def cookie(name, value, **kw):
   """
   Return a HTTP `Set-Cookie' header.
@@ -272,7 +286,8 @@ def page(template, header = {}, title = 'Chopwood', **kw):
   header = dict(header, content_type = 'text/html')
   OUT.header(**header)
   format_tmpl(TMPL['wrapper.fhtml'],
-              title = title, payload = TMPL[template], **kw)
+              title = title, warnings = OUT.warnings,
+              payload = TMPL[template], **kw)
 
 ###--------------------------------------------------------------------------
 ### Error reporting.
@@ -392,7 +407,7 @@ def cgiparse():
 
   ## Acquire the query string.
   if METHOD in ['GET', 'HEAD']:
-    q = getenv('QUERY_STRING')
+    q = ENV.get('QUERY_STRING', '')
 
   elif METHOD == 'POST':