#16676: The 'add' filter should stringify value or argument if the other value 
is a
string
-------------------------------------+---------------------------------
               Reporter:  dtrebbien  |          Owner:  nobody
                   Type:  Bug        |         Status:  new
              Milestone:             |      Component:  Template system
                Version:  1.3        |       Severity:  Normal
             Resolution:             |       Keywords:
           Triage Stage:  Accepted   |      Has patch:  0
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  0
                  UI/UX:  0          |
-------------------------------------+---------------------------------
Changes (by aaugustin):

 * needs_better_patch:   => 0
 * stage:  Unreviewed => Accepted
 * needs_tests:   => 0
 * needs_docs:   => 0


Comment:

 In Python it's an error to add a string and an int:
 {{{
 >>> 'a' + 1
 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
 TypeError: cannot concatenate 'str' and 'int' objects
 >>> 1 + 'a'
 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
 TypeError: unsupported operand type(s) for +: 'int' and 'str'
 }}}

 In this case, the proper output is an empty string, as the docs says. I
 could confirm that Django returns the first value. It's a bug.

 ----

 However, `|add` doesn't really make sense with strings. `+` on strings is
 just concatenation, and concatenation is natively provided by the template
 engine.

 Instead of `{{ strval|add:intval }}`, just write `{{ strval }}{{ intval
 }}`.

 For this reason, I don't like the idea of converting both values to
 strings.

 ----

 I'm attaching a patch with tests (actually, the tests existed, but they
 contradicted the documentation; I think the documentation has precedence).
 I also fixed a naked except -- we never want to catch !BaseException.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/16676#comment:1>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-updates@googlegroups.com.
To unsubscribe from this group, send email to 
django-updates+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to