Attachment 'raise-but-exit.diff'

Download

   1 --- orig/MoinMoin/action/AttachFile.py
   2 +++ mod/MoinMoin/action/AttachFile.py
   3 @@ -26,7 +26,7 @@
   4  import os, mimetypes, sys, time, urllib
   5  from MoinMoin import config, user, util, wikiutil
   6  from MoinMoin.Page import Page
   7 -from MoinMoin.util import filesys
   8 +from MoinMoin.util import MoinMoinNoFooter, filesys
   9  
  10  action_name = __name__.split('.')[-1]
  11  htdocs_access = isinstance(config.attachments, type({}))
  12 @@ -483,7 +483,7 @@
  13          # check that we get a valid path
  14          if basepath != getAttachUrl(pagename, basename, request):
  15              # die hard on saver if he cheats
  16 -            print >>sys.stderr, "save_drawing: tainted path '%s', aborting!" % filename
  17 +            sys.stderr.write("save_drawing: tainted path '%s', aborting!" % filename)
  18              sys.exit(1)
  19      else:
  20          # get file information from URL-like filename
  21 @@ -543,7 +543,7 @@
  22      # send data
  23      shutil.copyfileobj(open(fpath, 'rb'), request, 8192)
  24  
  25 -    sys.exit(0)
  26 +    raise MoinMoinNoFooter
  27  
  28  
  29  def send_viewfile(pagename, request):
  30 
  31 
  32 --- orig/MoinMoin/action/links.py
  33 +++ mod/MoinMoin/action/links.py
  34 @@ -12,6 +12,7 @@
  35  
  36  import sys
  37  from MoinMoin import config, wikiutil
  38 +from MoinMoin.util import MoinMoinNoFooter
  39  
  40  
  41  def execute(pagename, request):
  42 @@ -55,7 +56,7 @@
  43          request.write('</pre>')
  44          wikiutil.send_footer(request, pagename, editable=0, showactions=0, form=form)
  45      else:
  46 -        sys.exit(0)
  47 +        raise MoinMoinNoFooter
  48  
  49  def _emit(pagename):
  50      """ Send pagename, encode it if it contains spaces
  51 
  52 
  53 --- orig/MoinMoin/action/titleindex.py
  54 +++ mod/MoinMoin/action/titleindex.py
  55 @@ -42,5 +42,5 @@
  56          for name in pages:
  57              request.write(name)
  58  
  59 -    sys.exit(0)
  60 +    raise util.MoinMoinNoFooter
  61  
  62 
  63 
  64 --- orig/MoinMoin/request.py
  65 +++ mod/MoinMoin/request.py
  66 @@ -264,6 +264,7 @@
  67          from MoinMoin import version
  68          from MoinMoin.Page import Page
  69          from MoinMoin.i18n import _
  70 +        from MoinMoin.util import MoinMoinNoFooter
  71  
  72          if self.query_string == 'action=xmlrpc':
  73              from MoinMoin.wikirpc import xmlrpc
  74 @@ -311,7 +312,7 @@
  75                  # looks like user wants to save a drawing
  76                  from MoinMoin.action.AttachFile import execute
  77                  execute(pagename, self)
  78 -                sys.exit(0)
  79 +                raise MoinMoinNoFooter
  80  
  81              if action:
  82                  handler = wikiaction.getHandler(action)
  83 @@ -344,8 +345,8 @@
  84                          self.write('<p>' + _("Can't work out query") + ' "<pre>' + query + '</pre>"')
  85  
  86              # generate page footer
  87 -            # (actions that do not want this footer use sys.exit(0) to break out
  88 -            # of the default execution path, see the "except SystemExit" below)
  89 +            # (actions that do not want this footer use raise util.MoinMoinNoFooter to break out
  90 +            # of the default execution path, see the "except MoinMoinNoFooter" below)
  91  
  92              self.clock.stop('run')
  93              self.clock.stop('total')
  94 @@ -366,7 +367,7 @@
  95                  else:
  96                      self.write('</body>\n</html>\n\n')
  97              
  98 -        except SystemExit:
  99 +        except MoinMoinNoFooter:
 100              pass
 101  
 102          except: # catch and print any exception
 103 
 104 
 105 --- orig/MoinMoin/stats/hitcounts.py
 106 +++ mod/MoinMoin/stats/hitcounts.py
 107 @@ -12,7 +12,7 @@
 108  
 109  from MoinMoin import config, caching
 110  from MoinMoin.Page import Page
 111 -from MoinMoin.util import datetime
 112 +from MoinMoin.util import MoinMoinNoFooter, datetime
 113  from MoinMoin.logfile import eventlog
 114  
 115  def linkto(pagename, request, params=''):
 116 @@ -183,5 +183,5 @@
 117      # copy the image
 118      image.reset()
 119      shutil.copyfileobj(image, request, 8192)
 120 -    sys.exit(0)
 121 +    raise MoinMoinNoFooter
 122  
 123 
 124 
 125 --- orig/MoinMoin/stats/pagesize.py
 126 +++ mod/MoinMoin/stats/pagesize.py
 127 @@ -12,6 +12,7 @@
 128  
 129  from MoinMoin import config, wikiutil
 130  from MoinMoin.Page import Page
 131 +from MoinMoin.util import MoinMoinNoFooter
 132  
 133  
 134  def linkto(pagename, request, params=''):
 135 @@ -114,5 +115,5 @@
 136      # copy the image
 137      image.reset()
 138      shutil.copyfileobj(image, request, 8192)
 139 -    sys.exit(0)
 140 +    raise MoinMoinNoFooter
 141  
 142 
 143 
 144 --- orig/MoinMoin/stats/useragents.py
 145 +++ mod/MoinMoin/stats/useragents.py
 146 @@ -14,6 +14,7 @@
 147  from MoinMoin import config, wikiutil, caching
 148  from MoinMoin.logfile import eventlog
 149  from MoinMoin.Page import Page
 150 +from MoinMoin.util import MoinMoinNoFooter
 151  
 152  
 153  def linkto(pagename, request, params=''):
 154 @@ -130,5 +131,5 @@
 155      # copy the image
 156      image.reset()
 157      shutil.copyfileobj(image, request, 8192)
 158 -    sys.exit(0)
 159 +    raise MoinMoinNoFooter
 160  
 161 
 162 
 163 --- orig/MoinMoin/util/__init__.py
 164 +++ mod/MoinMoin/util/__init__.py
 165 @@ -51,6 +51,14 @@
 166  
 167  
 168  #############################################################################
 169 +### Exceptions
 170 +#############################################################################
 171 +
 172 +class MoinMoinNoFooter(Exception):
 173 +    """Raised by actions to prevent output of a page footer (with timings)."""
 174 +    pass
 175 +
 176 +#############################################################################
 177  ### Misc
 178  #############################################################################
 179  
 180 
 181 
 182 --- orig/MoinMoin/wikiaction.py
 183 +++ mod/MoinMoin/wikiaction.py
 184 @@ -23,7 +23,7 @@
 185  import os, re, string, sys, time, urllib
 186  from MoinMoin import config, util, wikiutil
 187  from MoinMoin.Page import Page
 188 -from MoinMoin.util import pysupport
 189 +from MoinMoin.util import MoinMoinNoFooter, pysupport
 190  
 191  #############################################################################
 192  ### Search
 193 @@ -559,7 +559,7 @@
 194      page = Page(pagename)
 195      request.write('<!-- Transclusion of %s -->' % request.getQualifiedURL(page.url(request)))
 196      page.send_page(request, count_hit=0, content_only=1)
 197 -    sys.exit(0)
 198 +    raise MoinMoinNoFooter
 199  
 200  
 201  def do_edit(pagename, request):
 202 @@ -780,7 +780,7 @@
 203          page = Page(pagename)
 204  
 205      request.write(page.get_raw_body())
 206 -    sys.exit(0)
 207 +    raise MoinMoinNoFooter
 208  
 209  
 210  def do_format(pagename, request):
 211 @@ -803,17 +803,15 @@
 212      request.http_headers(["Content-Type: " + 'text/plain'])
 213  
 214      Page(pagename, formatter = Formatter(request)).send_page(request)
 215 -    sys.exit(0)
 216 +    raise MoinMoinNoFooter
 217  
 218  
 219  def do_chart(pagename, request):
 220 -    if not request.user.may.read(pagename):
 221 -        sys.exit(0)
 222 -
 223 -    chart_type = request.form['type'][0]
 224 -    func = pysupport.importName("MoinMoin.stats." + chart_type, "draw")
 225 -    func(pagename, request)
 226 -    sys.exit(0)
 227 +    if request.user.may.read(pagename):
 228 +        chart_type = request.form['type'][0]
 229 +        func = pysupport.importName("MoinMoin.stats." + chart_type, "draw")
 230 +        func(pagename, request)
 231 +    raise MoinMoinNoFooter
 232  
 233  
 234  def do_dumpform(pagename, request):
 235 @@ -821,7 +819,7 @@
 236  
 237      request.http_headers()
 238      request.write("<html><body>" + data + "</body></html>")
 239 -    sys.exit(0)
 240 +    raise MoinMoinNoFooter
 241  
 242  
 243  def do_export(pagename, request):
 244 @@ -860,7 +858,7 @@
 245      # copy the body
 246      outbuff.reset()
 247      shutil.copyfileobj(outbuff, request, 8192)
 248 -    sys.exit(0)
 249 +    raise MoinMoinNoFooter
 250  
 251  
 252  #############################################################################

Attached Files

To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.
  • [get | view] (2003-12-31 09:44:19, 6.2 KB) [[attachment:fix-attachfile-filename.diff]]
  • [get | view] (2004-01-04 08:55:32, 0.6 KB) [[attachment:fix-twisted-httphost.diff]]
  • [get | view] (2004-01-16 08:39:21, 1.6 KB) [[attachment:macro-sendpage.diff]]
  • [get | view] (2003-12-31 09:20:52, 7.0 KB) [[attachment:raise-but-exit.diff]]
  • [get | view] (2003-12-07 18:15:55, 0.2 KB) [[attachment:version.txt]]
  • [get | view] (2003-12-07 18:15:55, 3.1 KB) [[attachment:wikiaction-2003-02-13.diff]]
  • [get | view] (2003-12-07 18:15:55, 3.2 KB) [[attachment:wikiutil-2003-02-13.diff]]
 All files | Selected Files: delete move to page copy to page

You are not allowed to attach a file to this page.