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: +

    +
  1. Poking the administrator of this site to see if they respond
  2. +
  3. Looking for similar issue tickets with: + +
  4. +
  5. Submitting a new ticket using the following link (quick & easy):
  6. +

     %(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'))