Added templates for 404 and 500 errors. 404 displays a generic "page
not found" error. 500 displays the exception type and value, along with
a traceback that can be revealed.

Risk: low
Visibility: medium (changing the look and feel of errors)

Signed-off-by: James Ren <jamesren@google.com>


git-svn-id: http://test.kernel.org/svn/autotest/trunk@1895 592f7852-d20e-0410-864c-8624ca9c26a4
diff --git a/frontend/afe/views.py b/frontend/afe/views.py
index 365f84f..8d7911b 100644
--- a/frontend/afe/views.py
+++ b/frontend/afe/views.py
@@ -1,8 +1,10 @@
-import urllib2
+import urllib2, sys, traceback, cgi
 
 from frontend.afe import models, rpc_handler, rpc_interface, site_rpc_interface
 from frontend.afe import rpc_utils
 from django.http import HttpResponse, HttpResponsePermanentRedirect
+from django.http import HttpResponseServerError
+from django.template import Context, loader
 
 # since site_rpc_interface is later in the list, its methods will override those
 # of rpc_interface
@@ -41,3 +43,14 @@
         if header not in ('connection',):
             http_response[header] = value
     return http_response
+
+
+def handler500(request):
+    t = loader.get_template('500.html')
+    trace = traceback.format_exc()
+    context = Context({
+        'type': sys.exc_type,
+        'value': sys.exc_value,
+        'traceback': cgi.escape(trace)
+    })
+    return HttpResponseServerError(t.render(context))