diff options
author | pjenvey <devnull@localhost> | 2006-07-31 02:46:11 +0000 |
---|---|---|
committer | pjenvey <devnull@localhost> | 2006-07-31 02:46:11 +0000 |
commit | 45a5adb9e393a140dfc2fb465d683648322842a6 (patch) | |
tree | fdd6942d709abedbead6d055bc950602305fe3c9 | |
parent | b9259b83cedacdb24247cbf8bf5e17d3b21aa004 (diff) | |
download | paste-45a5adb9e393a140dfc2fb465d683648322842a6.tar.gz |
only displaying EvalException's full traceback button when the full traceback
differs from the regular (includes hidden frames)
-rw-r--r-- | docs/news.txt | 4 | ||||
-rw-r--r-- | paste/evalexception/middleware.py | 26 |
2 files changed, 23 insertions, 7 deletions
diff --git a/docs/news.txt b/docs/news.txt index 1b52397..6c47085 100644 --- a/docs/news.txt +++ b/docs/news.txt @@ -6,6 +6,10 @@ News 0.9.7 ----- +* The ``EvalException`` 'full traceback' button is now only displayed + when the full traceback differs from the regular (includes hidden + frames). + * Fixed ``EvalException`` returning a Content-type of 'text-html' instead of 'text/html' in some cases. diff --git a/paste/evalexception/middleware.py b/paste/evalexception/middleware.py index 4fedbe0..26850dd 100644 --- a/paste/evalexception/middleware.py +++ b/paste/evalexception/middleware.py @@ -485,19 +485,24 @@ def make_table(items): '\n'.join(rows)) def format_eval_html(exc_data, base_path, counter): - short_er = EvalHTMLFormatter( + short_formatter = EvalHTMLFormatter( base_path=base_path, counter=counter, - include_reusable=False).format_collected_data(exc_data) - long_er = EvalHTMLFormatter( + include_reusable=False) + short_er = short_formatter.format_collected_data(exc_data) + long_formatter = EvalHTMLFormatter( base_path=base_path, counter=counter, show_hidden_frames=True, show_extra_data=False, - include_reusable=False).format_collected_data(exc_data) + include_reusable=False) + long_er = long_formatter.format_collected_data(exc_data) text_er = formatter.format_text(exc_data, show_hidden_frames=True) - return """ - %s + 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 + full_traceback_html = """ <br> <script type="text/javascript"> show_button('full_traceback', 'full traceback') @@ -505,6 +510,13 @@ def format_eval_html(exc_data, base_path, counter): <div id="full_traceback" class="hidden-data"> %s </div> + """ % long_er + else: + full_traceback_html = '' + + return """ + %s + %s <br> <script type="text/javascript"> show_button('text_version', 'text version') @@ -512,7 +524,7 @@ def format_eval_html(exc_data, base_path, counter): <div id="text_version" class="hidden-data"> <textarea style="width: 100%%" rows=10 cols=60>%s</textarea> </div> - """ % (short_er, long_er, cgi.escape(text_er)) + """ % (short_er, full_traceback_html, cgi.escape(text_er)) def make_repost_button(environ): url = request.construct_url(environ) |