Opened 3 days ago

Last modified 2 days ago

#36049 assigned Bug

The `upper` template filter should set `is_safe=True`

Reported by: Lily Foote Owned by: Chaitanya Rahalkar
Component: Template system Version: 5.1
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: yes
Needs tests: no Patch needs improvement: yes
Easy pickings: no UI/UX: no

Description (last modified by Lily Foote)

I noticed this inconsistency between upper and lower where upper has is_safe=False but lower has is_safe=True. I think lower is correct and upper is incorrect.

This has been the case ever since is_safe was introduced in https://github.com/django/django/commit/356662cf74c99fac90afb0f5e6aac8d2d573e62a.

from django.template import engines
from django.utils.safestring import mark_safe


def test_is_safe():
    template = """
{{ html|upper }}
{{ html|lower }}
"""
    template = engines["django"].from_string(template)
    html = mark_safe("<p>Hello World!</p>")
    assert template.render({"html": html}) == """
<P>HELLO WORLD!</P>
<p>hello world!</p>
"""

E       AssertionError: assert '\n&lt;P&gt;H... world!</p>\n' == '\n<P>HELLO W... world!</P>\n'
E         
E           
E         - <P>HELLO WORLD!</P>
E         + &lt;P&gt;HELLO WORLD!&lt;/P&gt;
E           <p>hello world!</p>

Change History (6)

comment:1 by Lily Foote, 3 days ago

Description: modified (diff)

comment:2 by Lily Foote, 3 days ago

Description: modified (diff)

comment:3 by Tim Graham, 2 days ago

Component: UncategorizedTemplate system
Triage Stage: UnreviewedAccepted
Type: UncategorizedBug

comment:4 by Chaitanya Rahalkar, 2 days ago

Owner: set to Chaitanya Rahalkar
Status: newassigned

comment:5 by Chaitanya Rahalkar, 2 days ago

Has patch: set

comment:6 by Mariusz Felisiak, 2 days ago

Needs documentation: set
Patch needs improvement: set
Note: See TracTickets for help on using tickets.
Back to Top