# HG changeset patch
# User Tero Marttila
# Date 1234747500 -7200
# Node ID a25d1bf758e62ea234750c3fef798c324268833a
# Parent c69a176b36204652fd92636e5f0a6793db2c52ec
moar pimping of the error page... at this point, error messages are becoming more of a feature than a bug
diff -r c69a176b3620 -r a25d1bf758e6 error.py
--- a/error.py Mon Feb 16 02:55:17 2009 +0200
+++ b/error.py Mon Feb 16 03:25:00 2009 +0200
@@ -15,6 +15,9 @@
else :
return msg
+def build_link (title, url) :
+ return '%s' % (cgi.escape(url, True), cgi.escape(title))
+
def build_error (exc_info=None, env=None) :
"""
Dumps out a raw traceback of the given/current exception to stdout.
@@ -44,22 +47,31 @@
# working copy path?
try :
- from config import HG_WC_PATH
+ from config import HG_WC_PATH, HGWEB_URL
wc_path = HG_WC_PATH
+ hgweb_url = HGWEB_URL
except :
# a good guess
wc_path = '.'
+ hgweb_url = None
# version?
try :
- from version import version_string
+ from version import version_string, version_link_hg
version = version_string(wc_path)
+
+ if hgweb_url :
+ version_href = version_link_hg(wc_path, hgweb_url)
+
+ else :
+ version_href = None
except :
version = None
+ version_href = None
# the exception type
exception_str = traceback.format_exception_only(*exc_info[:2])[-1]
@@ -71,19 +83,31 @@
trac_url = "http://projects.qmsk.net/irclogs2/trac"
# ticket list
- query_url = "%s/query" % trac_url
+ trac_query = build_link("All tickets", "%s/query" % trac_url)
# submit ticket
submit_args = dict(type='defect')
-
+
+ # handle optional components
if url :
submit_args['url'] = url
-
+ trac_query_url = build_link("Same URL", "%s/query?url=%s" % (trac_url, urllib.quote(url)))
+ else :
+ trac_query_url = ""
+
if version :
submit_args['revision'] = version
+ trac_query_version = build_link("Same version", "%s/query?revision=%s" % (trac_url, urllib.quote(version)))
+
+ else :
+ trac_query_version = ""
if exception_str :
submit_args['summary'] = truncate(exception_str, 140)
+ trac_query_err = build_link("Same error", "%s/query?summary=%s" % (trac_url, urllib.quote(exception_str.rstrip())))
+
+ else :
+ trac_query_err = ""
if traceback_lines :
# this is big
@@ -104,20 +128,55 @@
500 Internal Server Error
Oops!
- An error occured, which was not logged, and will not be reported to anybody. It might be your fault, or it might be
- mine.
+ An error occured, which was not logged, and was not reported to anybody. It might be your fault, or it might be mine.
+
- You can try poking the administrator of this site to see if they respond, or submit a defect ticket at the Project Trac, using the following link:
+ You can try:
+
+ - Poking the administrator of this site to see if they respond
+ - Looking for similar issue tickets with:
+
+ - %(trac_query)s
+ - %(trac_query_url)s
+ - %(trac_query_version)s
+ - %(trac_query_err)s
+
+
+ - Submitting a new ticket using the following link (quick & easy):
+
%(submit_url_short)s
+
Details:
+The page you tried to request was:
+
+ %(url)s
+
+
+The software version is:
+
+ %(version_link)s
+
+
+The error was:
+
+ %(exception)s
+
+
+The traceback was:
%(traceback)s
""" % dict(
- traceback = cgi.escape(''.join(traceback_lines)),
- query_url = query_url,
+ url = url if url else 'Unknown',
+ version_link = version_href if version_href else 'Unknown',
+ exception = truncate(exception_str, 512),
+ traceback = cgi.escape(''.join(' ' + line for line in traceback_lines)),
+ trac_query = trac_query,
+ trac_query_url = trac_query_url,
+ trac_query_version = trac_query_version,
+ trac_query_err = trac_query_err,
submit_url = submit_url,
submit_url_short = truncate(submit_url, 120)
)).encode('utf-8'))