~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to ivle/dispatch/__init__.py

  • Committer: William Grant
  • Date: 2009-06-29 01:55:55 UTC
  • mto: This revision was merged to the branch mainline in revision 1322.
  • Revision ID: grantw@unimelb.edu.au-20090629015555-49xxv0piiieunx8e
Add docs on configuring Apache.

Show diffs side-by-side

added added

removed removed

Lines of Context:
155
155
    req.content_type = "text/html"
156
156
    logfile = os.path.join(config['paths']['logs'], 'ivle_error.log')
157
157
    logfail = False
158
 
    req.status = mod_python.apache.HTTP_INTERNAL_SERVER_ERROR
159
 
 
 
158
    try:
 
159
        httpcode = exc_value.httpcode
 
160
        req.status = httpcode
 
161
    except AttributeError:
 
162
        httpcode = None
 
163
        req.status = mod_python.apache.HTTP_INTERNAL_SERVER_ERROR
160
164
    try:
161
165
        publicmode = req.publicmode
162
166
    except AttributeError:
185
189
    # misbehaves (which is currently very easy, if things aren't set up
186
190
    # correctly).
187
191
    # Write the traceback.
188
 
 
189
 
    # We need to special-case IVLEJailError, as we can get another
 
192
    # If this is a non-4xx IVLEError, get the message and httpcode and
 
193
    # make the error message a bit nicer (but still include the
 
194
    # traceback).
 
195
    # We also need to special-case IVLEJailError, as we can get another
190
196
    # almost-exception out of it.
 
197
 
 
198
    codename, msg = None, None
 
199
 
191
200
    if exc_type is util.IVLEJailError:
 
201
        msg = exc_value.type_str + ": " + exc_value.message
192
202
        tb = 'Exception information extracted from IVLEJailError:\n'
193
203
        tb += urllib.unquote(exc_value.info)
194
204
    else:
 
205
        try:
 
206
            codename, msg = req.get_http_codename(httpcode)
 
207
        except AttributeError:
 
208
            pass
 
209
 
195
210
        tb = ''.join(traceback.format_exception(exc_type, exc_value,
196
211
                                                exc_traceback))
197
212
 
198
 
    logging.error('\n' + tb)
 
213
    logging.error('%s\n%s'%(str(msg), tb))
199
214
 
200
215
    # Error messages are only displayed is the user is NOT a student,
201
216
    # or if there has been a problem logging the error message
205
220
<html xmlns="http://www.w3.org/1999/xhtml">
206
221
<head><title>IVLE Internal Server Error</title></head>
207
222
<body>
208
 
<h1>IVLE Internal Server Error</h1>
 
223
<h1>IVLE Internal Server Error""")
 
224
    if show_errors:
 
225
        if codename is not None and \
 
226
           httpcode != mod_python.apache.HTTP_INTERNAL_SERVER_ERROR:
 
227
            req.write(": %s" % cgi.escape(codename))
 
228
 
 
229
    req.write("""</h1>
209
230
<p>An error has occured which is the fault of the IVLE developers or
210
231
administrators. """)
211
232
 
217
238
    req.write("</p>")
218
239
 
219
240
    if show_errors:
 
241
        if msg is not None:
 
242
            req.write("<p>%s</p>\n" % cgi.escape(msg))
 
243
        if httpcode is not None:
 
244
            req.write("<p>(HTTP error code %d)</p>\n" % httpcode)
220
245
        req.write("<h2>Debugging information</h2>")
 
246
 
221
247
        req.write("<pre>\n%s\n</pre>\n"%cgi.escape(tb))
222
248
    req.write("</body></html>")