Esempio n. 1
0
 def post_traceback(self, req):
     """Post the long XML traceback to the host and path provided"""
     debug_info = req.debug_info
     long_xml_er = formatter.format_xml(debug_info.exc_data, 
         show_hidden_frames=True, show_extra_data=False, 
         libraries=self.libraries)[0]
     host = req.GET['host']
     headers = req.headers
     conn = httplib.HTTPConnection(host)
     headers = {'Content-Length':len(long_xml_er), 
                'Content-Type':'application/xml'}
     conn.request("POST", req.GET['path'], long_xml_er, headers=headers)
     resp = conn.getresponse()
     res = Response()
     for header, value in resp.getheaders():
         if header.lower() in ['server', 'date']: continue
         res.headers[header] = value
     res.body = resp.read()
     return res
Esempio n. 2
0
def format_eval_html(exc_data, base_path, counter, libraries):
    short_formatter = EvalHTMLFormatter(
        base_path=base_path,
        counter=counter,
        include_reusable=False)
    short_er, extra_data = short_formatter.format_collected_data(exc_data)
    short_text_er, text_extra_data = formatter.format_text(exc_data, show_extra_data=False)
    long_formatter = EvalHTMLFormatter(
        base_path=base_path,
        counter=counter,
        show_hidden_frames=True,
        show_extra_data=False,
        include_reusable=False)
    long_er, extra_data_none = long_formatter.format_collected_data(exc_data)
    long_text_er = formatter.format_text(exc_data, show_hidden_frames=True,
                                         show_extra_data=False)[0]
    long_xml_er = formatter.format_xml(exc_data, show_hidden_frames=True, 
                                  show_extra_data=False, libraries=libraries)[0]
    short_xml_er = formatter.format_xml(exc_data, show_hidden_frames=False, 
                                  show_extra_data=False, libraries=libraries)[0]
    
    if short_formatter.filter_frames(exc_data.frames) != \
        long_formatter.filter_frames(exc_data.frames):
        # Only display the full traceback when it differs from the
        # short version
        long_text_er = cgi.escape(long_text_er)
        full_traceback_html = """
        <div id="full_traceback" class="hidden-data">
        %s
        </div>
        <div id="long_text_version" class="hidden-data">
        <textarea style="width: 100%%" rows=%s cols=60>%s</textarea>
        </div>
        """ % (long_er, len(long_text_er.splitlines()), long_text_er)
    else:
        full_traceback_html = ''

    short_text_er = cgi.escape(short_text_er)
    
    long_xml_leng = len(long_xml_er.splitlines())
    if long_xml_leng > 50:
        long_xml_leng = 50

    short_xml_leng = len(short_xml_er.splitlines())
    if short_xml_leng > 50:
        short_xml_leng = 50

    return """
    <div id="short_traceback">
    %s
    </div>
    <div id="short_text_version" class="hidden-data">
    <textarea style="width: 100%%" rows=%s cols=60>%s</textarea>
    </div>
    <div id="long_xml_version" class="hidden-data">
    <textarea style="width: 100%%" rows=%s cols=60>%s</textarea>
    </div>
    <div id="short_xml_version" class="hidden-data">
    <textarea style="width: 100%%" rows=%s cols=60>%s</textarea>
    </div>
    %s
    """ % (short_er, len(short_text_er.splitlines()), short_text_er,
           long_xml_leng, cgi.escape(long_xml_er), 
           short_xml_leng, cgi.escape(short_xml_er), 
           full_traceback_html), extra_data