コード例 #1
0
    def render_summary(self, include_title=True, request=None):
        """Render the traceback for the interactive console."""
        title = ''
        frames = []
        classes = ['traceback']
        if not self.frames:
            classes.append('noframe-traceback')

        if include_title:
            if self.is_syntax_error:
                title = text_('Syntax Error')
            else:
                title = text_('Traceback <em>(most recent call last)</em>:')

        for frame in self.frames:
            frames.append(
                text_('<li%s>%s') %
                (frame.info and text_(' title="%s"' % escape(frame.info))
                 or text_(''), frame.render()))

        if self.is_syntax_error:
            description_wrapper = text_('<pre class=syntaxerror>%s</pre>')
        else:
            description_wrapper = text_('<blockquote>%s</blockquote>')

        vars = {
            'classes': text_(' '.join(classes)),
            'title': title and text_('<h3>%s</h3>' % title) or text_(''),
            'frames': text_('\n'.join(frames)),
            'description': description_wrapper % escape(self.exception),
        }
        return render(
            'pyramid_debugtoolbar:templates/exception_summary.dbtmako',
            vars,
            request=request)
コード例 #2
0
    def process_response(self, response):
        if self.has_content:
            traceback = self.request.pdbt_tb

            exc = escape(traceback.exception)
            summary = Traceback.render_summary(traceback,
                                               include_title=False,
                                               request=self.request)
            token = self.request.registry.pdtb_token
            url = ''  # self.request.route_url(EXC_ROUTE_NAME, _query=qs)
            evalex = self.exc_history.eval_exc

            self.data = {
                'evalex': evalex and 'true' or 'false',
                'console': 'false',
                'lodgeit_url': None,
                'title': exc,
                'exception': exc,
                'exception_type': escape(traceback.exception_type),
                'summary': summary,
                'plaintext': traceback.plaintext,
                'plaintext_cs': re.sub('-{2,}', '-', traceback.plaintext),
                'traceback_id': traceback.id,
                'token': token,
                'url': url,
            }
コード例 #3
0
 def render_full(self, request, lodgeit_url=None):
     """Render the Full HTML page with the traceback info."""
     static_path = request.static_url(STATIC_PATH)
     root_path = request.route_url(ROOT_ROUTE_NAME)
     exc = escape(self.exception)
     summary = self.render_summary(include_title=False, request=request)
     qs = {'token': request.exc_history.token, 'tb': str(self.id)}
     url = request.route_url(EXC_ROUTE_NAME, _query=qs)
     evalex = request.exc_history.eval_exc
     vars = {
         'evalex': evalex and 'true' or 'false',
         'console': 'false',
         'lodgeit_url': escape(lodgeit_url),
         'title': exc,
         'exception': exc,
         'exception_type': escape(self.exception_type),
         'summary': summary,
         'plaintext': self.plaintext,
         'plaintext_cs': re.sub('-{2,}', '-', self.plaintext),
         'traceback_id': self.id,
         'static_path': static_path,
         'token': request.exc_history.token,
         'root_path': root_path,
         'url': url,
     }
     return render('pyramid_debugtoolbar:templates/exception.dbtmako',
                   vars,
                   request=request)
コード例 #4
0
 def render_full(self, request, lodgeit_url=None):
     """Render the Full HTML page with the traceback info."""
     static_path = request.static_url(STATIC_PATH)
     root_path = request.route_url(ROOT_ROUTE_NAME)
     exc = escape(self.exception)
     summary = self.render_summary(include_title=False, request=request)
     qs = {'token': request.exc_history.token, 'tb': str(self.id)}
     url = request.route_url(EXC_ROUTE_NAME, _query=qs)
     evalex = request.exc_history.eval_exc
     vars = {
         'evalex':           evalex and 'true' or 'false',
         'console':          'false',
         'lodgeit_url':      escape(lodgeit_url),
         'title':            exc,
         'exception':        exc,
         'exception_type':   escape(self.exception_type),
         'summary':          summary,
         'plaintext':        self.plaintext,
         'plaintext_cs':     re.sub('-{2,}', '-', self.plaintext),
         'traceback_id':     self.id,
         'static_path':      static_path,
         'token':            request.exc_history.token,
         'root_path':        root_path,
         'url':              url,
     }
     return render('pyramid_debugtoolbar:templates/exception.dbtmako',
                   vars, request=request)
コード例 #5
0
ファイル: tbtools.py プロジェクト: Cito/pyramid_debugtoolbar
    def render_summary(self, include_title=True, request=None):
        """Render the traceback for the interactive console."""
        title = ''
        frames = []
        classes = ['traceback']
        if not self.frames:
            classes.append('noframe-traceback')

        if include_title:
            if self.is_syntax_error:
                title = text_('Syntax Error')
            else:
                title = text_('Traceback <em>(most recent call last)</em>:')

        for frame in self.frames:
            frames.append(
                text_('<li%s>%s') % (
                frame.info and text_(' title="%s"' % escape(frame.info)) or
                    text_(''),
                frame.render()
            ))

        if self.is_syntax_error:
            description_wrapper = '<pre class=syntaxerror>%s</pre>'
        else:
            description_wrapper = '<blockquote>%s</blockquote>'

        vars = {
            'classes':      text_(' '.join(classes)),
            'title':        title and text_('<h3>%s</h3>' % title) or text_(''),
            'frames':       text_('\n'.join(frames)),
            'description':  text_(description_wrapper % escape(self.exception)),
        }
        return render('pyramid_debugtoolbar:templates/exception_summary.mako',
                      vars, request=request)
コード例 #6
0
 def render(self):
     """Render a single frame in a traceback."""
     return FRAME_HTML % {
         'id': self.id,
         'filename': escape(self.filename),
         'lineno': self.lineno,
         'function_name': escape(self.function_name),
         'current_line': escape(self.current_line.strip())
     }
コード例 #7
0
 def render(self):
     """Render a single frame in a traceback."""
     return FRAME_HTML % {
         'id':               self.id,
         'filename':         escape(self.filename),
         'lineno':           self.lineno,
         'function_name':    escape(self.function_name),
         'current_line':     escape(self.current_line.strip())
     }
コード例 #8
0
ファイル: repr.py プロジェクト: bennihepp/sandbox
 def render_object_dump(self, items, title, repr=None):
     html_items = []
     for key, value in items:
         html_items.append('<tr><th>%s<td><pre class=repr>%s</pre>' %
                           (escape(key), value))
     if not html_items:
         html_items.append('<tr><td><em>Nothing</em>')
     return OBJECT_DUMP_HTML % {
         'title': escape(title),
         'repr': repr and '<pre class=repr>%s</pre>' % repr or '',
         'items': '\n'.join(html_items)
     }
コード例 #9
0
 def render_object_dump(self, items, title, repr=None):
     html_items = []
     for key, value in items:
         html_items.append('<tr><th>%s<td><pre class=repr>%s</pre>' %
                           (escape(key), value))
     if not html_items:
         html_items.append('<tr><td><em>Nothing</em>')
     return OBJECT_DUMP_HTML % {
         'title':    escape(title),
         'repr':     repr and '<pre class=repr>%s</pre>' % repr or '',
         'items':    '\n'.join(html_items)
     }
コード例 #10
0
ファイル: repr.py プロジェクト: caseman/pyramid_debugtoolbar
 def fallback_repr(self):
     try:
         info = ''.join(format_exception_only(*sys.exc_info()[:2]))
     except Exception: # pragma: no cover
         info = '?'
     return u'<span class="brokenrepr">&lt;broken repr (%s)&gt;' \
            u'</span>' % escape(info.decode('utf-8', 'ignore').strip())
コード例 #11
0
ファイル: repr.py プロジェクト: bennihepp/sandbox
 def fallback_repr(self):
     try:
         info = ''.join(format_exception_only(*sys.exc_info()[:2]))
     except Exception:  # pragma: no cover
         info = '?'
     return text_('<span class="brokenrepr">&lt;broken repr (%s)&gt;'
                  '</span>' %
                  escape(text_(info, 'utf-8', 'ignore').strip()))
コード例 #12
0
ファイル: repr.py プロジェクト: bennihepp/sandbox
 def py3_text_repr(self, obj, limit=70):
     buf = ['<span class="string">']
     escaped = escape(obj)
     a = repr(escaped[:limit])
     b = repr(escaped[limit:])
     if b != "''":
         buf.extend((a[:-1], '<span class="extended">', b[1:], '</span>'))
     else:
         buf.append(a)
     buf.append('</span>')
     return _add_subclass_info(text_(''.join(buf)), obj, text_type)
コード例 #13
0
 def py3_text_repr(self, obj, limit=70):
     buf = ['<span class="string">']
     escaped = escape(obj)
     a = repr(escaped[:limit])
     b = repr(escaped[limit:])
     if b != "''":
         buf.extend((a[:-1], '<span class="extended">', b[1:], '</span>'))
     else:
         buf.append(a)
     buf.append('</span>')
     return _add_subclass_info(text_(''.join(buf)), obj, text_type)
コード例 #14
0
    def process_response(self, response):
        self.traceback = traceback = getattr(self.request.debug_toolbar,
                                             'traceback', None)
        if self.traceback is not None:
            exc = escape(traceback.exception)
            evalex = self.request.registry.pdtb_eval_exc

            self.data = {
                'evalex': evalex and 'true' or 'false',
                'console': 'false',
                'lodgeit_url': None,
                'title': exc,
                'exception': exc,
                'exception_type': escape(traceback.exception_type),
                'plaintext': traceback.plaintext,
                'plaintext_cs': re.sub('-{2,}', '-', traceback.plaintext),
                'pdtb_token': self.request.registry.pdtb_token,
                'request_id': self.request.pdtb_id,
            }

        # stop hanging onto the request after the response is processed
        del self.request
コード例 #15
0
    def process_response(self, response):
        self.traceback = traceback = getattr(
            self.request.debug_toolbar, 'traceback', None)
        if self.traceback is not None:
            exc = escape(traceback.exception)
            evalex = self.request.registry.pdtb_eval_exc

            self.data = {
                'evalex': evalex and 'true' or 'false',
                'console': 'false',
                'lodgeit_url': None,
                'title': exc,
                'exception': exc,
                'exception_type': escape(traceback.exception_type),
                'plaintext': traceback.plaintext,
                'plaintext_cs': re.sub('-{2,}', '-', traceback.plaintext),
                'pdtb_token': self.request.registry.pdtb_token,
                'request_id': self.request.pdtb_id,
            }

        # stop hanging onto the request after the response is processed
        del self.request
コード例 #16
0
 def py2_string_repr(self, obj, limit=70):
     buf = ['<span class="string">']
     escaped = escape(obj)
     a = repr(escaped[:limit])
     b = repr(escaped[limit:])
     if isinstance(obj, text_type):
         buf.append('u')
         a = a[1:]
         b = b[1:]
     if b != "''":
         buf.extend((a[:-1], '<span class="extended">', b[1:], '</span>'))
     else:
         buf.append(a)
     buf.append('</span>')
     return _add_subclass_info(text_('').join(buf), obj, (str, unicode))
コード例 #17
0
ファイル: traceback.py プロジェクト: Bedrock02/Vigenere
    def process_response(self, response):
        if self.has_content:
            traceback = self.request.pdbt_tb

            exc = escape(traceback.exception)
            summary = Traceback.render_summary(traceback, include_title=False, request=self.request)
            token = self.request.registry.pdtb_token
            url = '' # self.request.route_url(EXC_ROUTE_NAME, _query=qs)
            evalex = self.exc_history.eval_exc

            self.data = {
                'evalex':           evalex and 'true' or 'false',
                'console':          'false',
                'lodgeit_url':      None,
                'title':            exc,
                'exception':        exc,
                'exception_type':   escape(traceback.exception_type),
                'summary':          summary,
                'plaintext':        traceback.plaintext,
                'plaintext_cs':     re.sub('-{2,}', '-', traceback.plaintext),
                'traceback_id':     traceback.id,
                'token':            token,
                'url':              url,
            }
コード例 #18
0
    def process_response(self, response):
        self.traceback = traceback = getattr(self.request, 'pdbt_tb', None)
        if self.traceback is not None:
            exc = escape(traceback.exception)
            token = self.request.registry.pdtb_token
            url = '' # self.request.route_url(EXC_ROUTE_NAME, _query=qs)
            evalex = self.exc_history.eval_exc

            self.data = {
                'evalex':           evalex and 'true' or 'false',
                'console':          'false',
                'lodgeit_url':      None,
                'title':            exc,
                'exception':        exc,
                'exception_type':   escape(traceback.exception_type),
                'plaintext':        traceback.plaintext,
                'plaintext_cs':     re.sub('-{2,}', '-', traceback.plaintext),
                'traceback_id':     traceback.id,
                'token':            token,
                'url':              url,
            }

        # stop hanging onto the request after the response is processed
        del self.request
コード例 #19
0
ファイル: repr.py プロジェクト: bennihepp/sandbox
 def py2_string_repr(self, obj, limit=70):
     buf = ['<span class="string">']
     escaped = escape(obj)
     a = repr(escaped[:limit])
     b = repr(escaped[limit:])
     if isinstance(obj, text_type):
         buf.append('u')
         a = a[1:]
         b = b[1:]
     if b != "''":
         buf.extend((a[:-1], '<span class="extended">', b[1:], '</span>'))
     else:
         buf.append(a)
     buf.append('</span>')
     return _add_subclass_info(text_('').join(buf), obj, (str, unicode))
コード例 #20
0
ファイル: test_utils.py プロジェクト: bennihepp/sandbox
 def test_escape(self):
     from pyramid_debugtoolbar.utils import escape
     class Foo(str):
         def __html__(self):
             return text_(self)
     assert escape(None) == ''
     assert escape(42) == '42'
     assert escape('<>') == '&lt;&gt;'
     assert escape('"foo"') == '"foo"'
     assert escape('"foo"', True) == '&quot;foo&quot;'
     assert escape(Foo('<foo>')) == '<foo>'
コード例 #21
0
 def test_escape(self):
     from pyramid_debugtoolbar.utils import escape
     class Foo(str):
         def __html__(self):
             return text_(self)
     assert escape(None) == ''
     assert escape(42) == '42'
     assert escape('<>') == '&lt;&gt;'
     assert escape('"foo"') == '"foo"'
     assert escape('"foo"', True) == '&quot;foo&quot;'
     assert escape(Foo('<foo>')) == '<foo>'
コード例 #22
0
    def test_escape(self):
        from pyramid_debugtoolbar.utils import escape

        class Foo(str):
            def __html__(self):
                return text_(self)

        assert escape(None) == ""
        assert escape(42) == "42"
        assert escape("<>") == "&lt;&gt;"
        assert escape('"foo"') == '"foo"'
        assert escape('"foo"', True) == "&quot;foo&quot;"
        assert escape(Foo("<foo>")) == "<foo>"
コード例 #23
0
ファイル: console.py プロジェクト: TheRaccoon161/UniBox
 def write(self, x):
     self._write(escape(x))
コード例 #24
0
 def render(self):
     return SOURCE_LINE_HTML % {
         'classes':      text_(' '.join(self.classes)),
         'lineno':       self.lineno,
         'code':         escape(self.code)
     }
コード例 #25
0
 def object_repr(self, obj):
     return text_('<span class="object">%s</span>' % 
                  escape(text_(repr(obj), 'utf-8', 'replace')))
コード例 #26
0
ファイル: repr.py プロジェクト: bennihepp/sandbox
 def object_repr(self, obj):
     return text_('<span class="object">%s</span>' %
                  escape(text_(repr(obj), 'utf-8', 'replace')))
コード例 #27
0
 def write(self, x):
     self._write(escape(x))
コード例 #28
0
 def writelines(self, x):
     self._write(escape(''.join(x)))
コード例 #29
0
ファイル: repr.py プロジェクト: caseman/pyramid_debugtoolbar
 def object_repr(self, obj):
     return u'<span class="object">%s</span>' % \
            escape(repr(obj).decode('utf-8', 'replace'))
コード例 #30
0
ファイル: console.py プロジェクト: TheRaccoon161/UniBox
 def writelines(self, x):
     self._write(escape(''.join(x)))
コード例 #31
0
 def render(self):
     return SOURCE_LINE_HTML % {
         'classes': text_(' '.join(self.classes)),
         'lineno': self.lineno,
         'code': escape(self.code)
     }