Details page: be robust for top-level message-as-string

Fix #55
This commit is contained in:
Klaas van Schelven
2025-03-06 13:09:29 +01:00
parent f99575b5c9
commit 646b1ea090

View File

@@ -454,7 +454,7 @@ def issue_event_details(request, issue, event_pk=None, digest_order=None, nav=No
]
logentry_info = []
if parsed_data.get("logger") or parsed_data.get("logentry", {}).get("message") or parsed_data.get("message"):
if parsed_data.get("logger") or parsed_data.get("logentry") or parsed_data.get("message"):
if "level" in parsed_data:
# Sentry gives "level" a front row seat in the UI; but we don't: in an Error Tracker, the default is just
# "error" (and we don't want to pollute the UI with this info). Sentry's documentation is also very sparse
@@ -470,16 +470,20 @@ def issue_event_details(request, issue, event_pk=None, digest_order=None, nav=No
# past. see https://github.com/bugsink/bugsink/issues/43
logentry_key = "logentry" if "logentry" in parsed_data else "message"
if parsed_data.get(logentry_key, {}).get("message"):
logentry_info.append(("message", parsed_data[logentry_key]["message"]))
if isinstance(parsed_data.get(logentry_key), dict):
if parsed_data.get(logentry_key, {}).get("message"):
logentry_info.append(("message", parsed_data[logentry_key]["message"]))
params = parsed_data.get(logentry_key, {}).get("params", {})
if isinstance(params, list):
for param_i, param_v in enumerate(params):
logentry_info.append(("#%s" % param_i, param_v))
elif isinstance(params, dict):
for param_k, param_v in params.items():
logentry_info.append((param_k, param_v))
params = parsed_data.get(logentry_key, {}).get("params", {})
if isinstance(params, list):
for param_i, param_v in enumerate(params):
logentry_info.append(("#%s" % param_i, param_v))
elif isinstance(params, dict):
for param_k, param_v in params.items():
logentry_info.append((param_k, param_v))
elif isinstance(parsed_data.get(logentry_key), str):
logentry_info.append(("message", parsed_data[logentry_key]))
key_info += [
("grouping key", event.grouping.grouping_key),