Skip to content

Commit c94dd79

Browse files
Christophe31Christophe Narbonnesentry-bot
authored
fix(django): Deal with template_name being a list (#1054)
Co-authored-by: Christophe Narbonne <[email protected]> Co-authored-by: sentry-bot <[email protected]>
1 parent 0b0b67b commit c94dd79

File tree

3 files changed

+30
-10
lines changed

3 files changed

+30
-10
lines changed

sentry_sdk/integrations/django/templates.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,15 @@ def get_template_frame_from_exception(exc_value):
4242
return None
4343

4444

45+
def _get_template_name_description(template_name):
46+
# type: (str) -> str
47+
if isinstance(template_name, (list, tuple)):
48+
if template_name:
49+
return "[{}, ...]".format(template_name[0])
50+
else:
51+
return template_name
52+
53+
4554
def patch_templates():
4655
# type: () -> None
4756
from django.template.response import SimpleTemplateResponse
@@ -57,7 +66,8 @@ def rendered_content(self):
5766
return real_rendered_content.fget(self)
5867

5968
with hub.start_span(
60-
op="django.template.render", description=self.template_name
69+
op="django.template.render",
70+
description=_get_template_name_description(self.template_name),
6171
) as span:
6272
span.set_data("context", self.context_data)
6373
return real_rendered_content.fget(self)
@@ -78,7 +88,8 @@ def render(request, template_name, context=None, *args, **kwargs):
7888
return real_render(request, template_name, context, *args, **kwargs)
7989

8090
with hub.start_span(
81-
op="django.template.render", description=template_name
91+
op="django.template.render",
92+
description=_get_template_name_description(template_name),
8293
) as span:
8394
span.set_data("context", context)
8495
return real_render(request, template_name, context, *args, **kwargs)

tests/integrations/django/myapp/views.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,9 @@ def template_test(request, *args, **kwargs):
122122

123123
@csrf_exempt
124124
def template_test2(request, *args, **kwargs):
125-
return TemplateResponse(request, "user_name.html", {"user_age": 25})
125+
return TemplateResponse(
126+
request, ("user_name.html", "another_template.html"), {"user_age": 25}
127+
)
126128

127129

128130
@csrf_exempt

tests/integrations/django/test_basic.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -563,18 +563,25 @@ def test_render_spans(sentry_init, client, capture_events, render_span_tree):
563563
integrations=[DjangoIntegration()],
564564
traces_sample_rate=1.0,
565565
)
566-
views_urls = [reverse("template_test2")]
566+
views_tests = [
567+
(
568+
reverse("template_test2"),
569+
'- op="django.template.render": description="[user_name.html, ...]"',
570+
),
571+
]
567572
if DJANGO_VERSION >= (1, 7):
568-
views_urls.append(reverse("template_test"))
573+
views_tests.append(
574+
(
575+
reverse("template_test"),
576+
'- op="django.template.render": description="user_name.html"',
577+
),
578+
)
569579

570-
for url in views_urls:
580+
for url, expected_line in views_tests:
571581
events = capture_events()
572582
_content, status, _headers = client.get(url)
573583
transaction = events[0]
574-
assert (
575-
'- op="django.template.render": description="user_name.html"'
576-
in render_span_tree(transaction)
577-
)
584+
assert expected_line in render_span_tree(transaction)
578585

579586

580587
def test_middleware_spans(sentry_init, client, capture_events, render_span_tree):

0 commit comments

Comments
 (0)