/kai/templates/tracebacks/index.mako

https://bitbucket.org/bbangert/kai/ · Mako · 55 lines · 52 code · 3 blank · 0 comment · 5 complexity · 2d31347376718b5a4c1f49fb8688b531 MD5 · raw file

  1. <div class="yui-b content">
  2. <%
  3. if c.tracebacks:
  4. results = list(c.tracebacks)
  5. if c.reverse:
  6. results.reverse()
  7. %>
  8. % if c.tracebacks:
  9. ${widgets.pager(c.start, results, c.tracebacks.total_rows, 'created')}
  10. <h1>Posted Tracebacks</h1>
  11. % for traceback in results[:10]:
  12. <% frame = traceback.frames[-1] %>
  13. <div class="exception">
  14. <h2 class="exception"><a href="${url('traceback', id=traceback.id)}">\
  15. ${traceback.exception_type} : ${h.truncate(traceback.exception_value, 100)}</a></h2>
  16. <div class="traceback_posted">
  17. <div class="traceback_gravatar">\
  18. <img src="http://www.gravatar.com/avatar/${gravatar(traceback.email or 'anonymous')}?s=30">
  19. </div>
  20. <div class="user_data">
  21. <div class="traceback_author">${traceback.displayname or 'Anonymous'}</div>\
  22. ${widgets.format_timestamp(traceback.created)}
  23. </div>
  24. </div>
  25. <div class="exception_frame">
  26. <div class="frame">Last Frame:</div>
  27. <div class="moduleline">${frame.module}:\
  28. <span class="lineno">${frame.line}</span>\
  29. in ${frame.function}
  30. </div>
  31. ${highlight(frame.operation, py_lexer, html_formatter) | n}\
  32. </div>
  33. </div>
  34. % endfor
  35. % else:
  36. <h1>Posted Tracebacks</h1>
  37. <p>No tracebacks posted</p>
  38. % endif
  39. </div>
  40. <%namespace name="widgets" file="/widgets.mako"/>
  41. <%def name="title()">${parent.title()} - Traceback Listing</%def>\
  42. <%inherit file="../layout.mako" />\
  43. <%!
  44. from pygments import highlight
  45. from pygments.lexers import PythonLexer
  46. from pygments.formatters import HtmlFormatter
  47. import md5
  48. def gravatar(email):
  49. return md5.md5(email).hexdigest()
  50. py_lexer = PythonLexer()
  51. html_formatter = HtmlFormatter()
  52. %>