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.You are not allowed to attach a file to this page.