diff --git a/plinth/views.py b/plinth/views.py index 856a8485e..c23f4cd65 100644 --- a/plinth/views.py +++ b/plinth/views.py @@ -6,6 +6,7 @@ Main FreedomBox views. import datetime import random import time +import traceback import urllib.parse from django.contrib import messages @@ -116,17 +117,20 @@ def messages_error(request, message, exception): If an exception can show HTML message, handle is separately. """ if hasattr(exception, 'get_html_message'): - collapse_id = 'error-details-' + str(random.randint(0, 10**9)) - message = format_html( - '{message} ' - 'Details
{html_message}
', - message=message, html_message=exception.get_html_message(), - collapse_id=collapse_id) + html_message = exception.get_html_message() + else: + exception_lines = traceback.format_exception(exception) + html_message = ''.join(exception_lines) - messages.error(request, message) + collapse_id = 'error-details-' + str(random.randint(0, 10**9)) + formatted_message = format_html( + '{message} ' + 'Details
{html_message}
', + message=message, html_message=html_message, collapse_id=collapse_id) + messages.error(request, formatted_message) def _get_redirect_url_from_param(request): diff --git a/static/themes/default/css/main.css b/static/themes/default/css/main.css index 1e9a8813f..123570c59 100644 --- a/static/themes/default/css/main.css +++ b/static/themes/default/css/main.css @@ -343,6 +343,10 @@ html { max-width: 100%; } +.alert pre { + margin-top: 1rem; +} + /* Tags */ .tag { --bs-btn-padding-y: 0.25rem; /* Make the badge shorter */