mirror of
https://github.com/bugsink/bugsink.git
synced 2025-12-17 18:44:35 -06:00
Markdown stacktrace: render with all frames
not just in-app ones; basic principle: more info means the LLM (or whatever) has more to go by
This commit is contained in:
@@ -105,5 +105,5 @@ class EventViewSet(AtomicRequestMixin, viewsets.ReadOnlyModelViewSet):
|
||||
)
|
||||
def stacktrace(self, request, pk=None):
|
||||
event = self.get_object()
|
||||
text = render_stacktrace_md(event, frames="in_app", include_locals=True)
|
||||
text = render_stacktrace_md(event, in_app_only=False, include_locals=True)
|
||||
return Response(text)
|
||||
|
||||
@@ -133,7 +133,7 @@ def _select_frames(frames, in_app_only):
|
||||
return filtered if filtered else frames
|
||||
|
||||
|
||||
def render_stacktrace_md(event, frames="in_app", include_locals=True):
|
||||
def render_stacktrace_md(event, in_app_only=False, include_locals=True):
|
||||
parsed = event.get_parsed_data()
|
||||
try:
|
||||
apply_sourcemaps(parsed)
|
||||
@@ -163,7 +163,6 @@ def render_stacktrace_md(event, frames="in_app", include_locals=True):
|
||||
if stack_of_plates and frames_list:
|
||||
frames_list = list(reversed(frames_list))
|
||||
|
||||
in_app_only = frames == "in_app"
|
||||
frames_list = _select_frames(frames_list, in_app_only)
|
||||
|
||||
for frame in frames_list:
|
||||
|
||||
@@ -47,4 +47,4 @@ class EventDetailSerializer(UTCModelSerializer):
|
||||
|
||||
@extend_schema_field(serializers.CharField)
|
||||
def get_stacktrace_md(self, obj):
|
||||
return render_stacktrace_md(obj, frames="in_app", include_locals=True)
|
||||
return render_stacktrace_md(obj, in_app_only=False, include_locals=True)
|
||||
|
||||
@@ -32,7 +32,7 @@ def event_plaintext(request, event):
|
||||
@atomic_for_request_method
|
||||
@event_membership_required
|
||||
def event_markdown(request, event, as_attachment=False):
|
||||
text = render_stacktrace_md(event, frames="in_app", include_locals=True)
|
||||
text = render_stacktrace_md(event, in_app_only=False, include_locals=True)
|
||||
result = HttpResponse(text, content_type="text/markdown; charset=utf-8")
|
||||
if as_attachment:
|
||||
result["Content-Disposition"] = content_disposition_header(
|
||||
|
||||
@@ -596,7 +596,7 @@ class IntegrationTest(TransactionTestCase):
|
||||
filename, response.content if response.status_code != 302 else response.url))
|
||||
|
||||
event = Event.objects.get(issue__project=project, event_id=data["event_id"])
|
||||
md = render_stacktrace_md(event, frames="all", include_locals=True)
|
||||
md = render_stacktrace_md(event, in_app_only=False, include_locals=True)
|
||||
|
||||
self.assertEqual('''# CapturedStacktraceFo
|
||||
4 kinds of frames
|
||||
@@ -788,7 +788,7 @@ class IssueDeletionTestCase(TransactionTestCase):
|
||||
|
||||
# see the note in `prune_orphans` about TagKey to understand why it's special.
|
||||
vacuum_models = [apps.get_model(app_label=s.split('.')[0], model_name=s.split('.')[1].lower())
|
||||
for s in ['tags.TagKey',]]
|
||||
for s in ['tags.TagKey']]
|
||||
|
||||
for model in models + vacuum_models:
|
||||
# test-the-test: make sure some instances of the models actually exist after setup
|
||||
|
||||
Reference in New Issue
Block a user