[Django] #30086: The numberformat template filter does not respect local localization settings

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

[Django] #30086: The numberformat template filter does not respect local localization settings

Django
#30086: The numberformat template filter does not respect local localization
settings
-------------------------------------------+------------------------
               Reporter:  Meiyer           |          Owner:  nobody
                   Type:  Bug              |         Status:  new
              Component:  Template system  |        Version:  1.11
               Severity:  Normal           |       Keywords:
           Triage Stage:  Unreviewed       |      Has patch:  0
    Needs documentation:  0                |    Needs tests:  0
Patch needs improvement:  0                |  Easy pickings:  0
                  UI/UX:  0                |
-------------------------------------------+------------------------
 Specifically, when the filter is used within the `{% localize [on|off] %}`
 block with the localization setting opposed to the value of `USE_L10N`
 ('on' when `USE_L10N = False` or 'off' when `USE_L10N = True`), the
 localization setting has not effect.

 This is due to the use of `formats.number_format()` without its `use_l10n`
 parameter, by the `numberformat` template filter (e.g.
 https://github.com/django/django/blob/master/django/template/defaultfilters.py#L144,
 https://github.com/django/django/blob/master/django/template/defaultfilters.py#L163).
 The value of the `use_l10n` parameter shall be taken out of the template
 rendering context. But I do not see any easy solution to this, as filters
 do not take context...

--
Ticket URL: <https://code.djangoproject.com/ticket/30086>
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 unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/052.e504de06d19d7bf8aabfa2df39d62a1c%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: [Django] #30086: Document how floatformat template filter interacts with the localize template tag (was: The numberformat template filter does not respect local localization settings)

Django
#30086: Document how floatformat template filter interacts with the localize
template tag
--------------------------------------+------------------------------------
     Reporter:  Meiyer                |                    Owner:  nobody
         Type:  Cleanup/optimization  |                   Status:  new
    Component:  Documentation         |                  Version:  1.11
     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 Tim Graham):

 * type:  Bug => Cleanup/optimization
 * component:  Template system => Documentation
 * stage:  Unreviewed => Accepted


Old description:

> Specifically, when the filter is used within the `{% localize [on|off]
> %}` block with the localization setting opposed to the value of
> `USE_L10N` ('on' when `USE_L10N = False` or 'off' when `USE_L10N =
> True`), the localization setting has not effect.
>
> This is due to the use of `formats.number_format()` without its
> `use_l10n` parameter, by the `numberformat` template filter (e.g.
> https://github.com/django/django/blob/master/django/template/defaultfilters.py#L144,
> https://github.com/django/django/blob/master/django/template/defaultfilters.py#L163).
> The value of the `use_l10n` parameter shall be taken out of the template
> rendering context. But I do not see any easy solution to this, as filters
> do not take context...
New description:

 Specifically, when the filter is used within the `{% localize [on|off] %}`
 block with the localization setting opposed to the value of `USE_L10N`
 ('on' when `USE_L10N = False` or 'off' when `USE_L10N = True`), the
 localization setting has not effect.

 This is due to the use of `formats.number_format()` without its `use_l10n`
 parameter, by the `numberformat` template filter (e.g.
 https://github.com/django/django/blob/c2c85663e2dd06c9ed9c9ec2d02202d6d668d7f0/django/template/defaultfilters.py#L144,
 https://github.com/django/django/blob/c2c85663e2dd06c9ed9c9ec2d02202d6d668d7f0/django/template/defaultfilters.py#L163).
 The value of the `use_l10n` parameter shall be taken out of the template
 rendering context. But I do not see any easy solution to this, as filters
 do not take context...

--

Comment:

 As long as the behavior doesn't contract existing documentation, perhaps
 the solution is the document the current behavior.

--
Ticket URL: <https://code.djangoproject.com/ticket/30086#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 unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/067.d5c3061717fea215c154532c43a2cb20%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: [Django] #30086: Document how floatformat template filter interacts with the localize template tag

Django
In reply to this post by Django
#30086: Document how floatformat template filter interacts with the localize
template tag
--------------------------------------+------------------------------------
     Reporter:  Meiyer                |                    Owner:  nobody
         Type:  Cleanup/optimization  |                   Status:  new
    Component:  Documentation         |                  Version:  1.11
     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
--------------------------------------+------------------------------------

Comment (by Marc Parizeau):

 Replying to [comment:1 Tim Graham]:
 > As long as the behavior doesn't contract existing documentation, perhaps
 the solution is the document the current behavior.

 Documenting would be better than nothing, but this behavior goes against
 the principle of least astonishment. Finding a way to honor the localize
 directive would be better. Any other filters that are affected by this
 limitation?

--
Ticket URL: <https://code.djangoproject.com/ticket/30086#comment:2>
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 unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/067.671acc0bdad22ac03560f7baf988d860%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: [Django] #30086: Document how floatformat template filter interacts with the localize template tag

Django
In reply to this post by Django
#30086: Document how floatformat template filter interacts with the localize
template tag
--------------------------------------+------------------------------------
     Reporter:  Meiyer                |                    Owner:  nobody
         Type:  Cleanup/optimization  |                   Status:  new
    Component:  Documentation         |                  Version:  1.11
     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
--------------------------------------+------------------------------------

Comment (by Claude Paroz):

 All filters are affected. As the reporter noticed, the filters are
 currently not aware of the rendering context. That's no easy fix.

--
Ticket URL: <https://code.djangoproject.com/ticket/30086#comment:3>
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 unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/067.78f6ba8867952a6c9177729f9696d329%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: [Django] #30086: Document how floatformat template filter interacts with the localize template tag

Django
In reply to this post by Django
#30086: Document how floatformat template filter interacts with the localize
template tag
--------------------------------------+------------------------------------
     Reporter:  Meiyer                |                    Owner:  nobody
         Type:  Cleanup/optimization  |                   Status:  new
    Component:  Documentation         |                  Version:  1.11
     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
--------------------------------------+------------------------------------

Comment (by Meiyer):

 Replying to [comment:2 Marc Parizeau]:
 > this behavior goes against the principle of least astonishment

 +1
 I consider this as a bug in the implementation of the filter, even though
 the original title of the ticket was modified by Tim. Why would something
 inside a `{% localize off %}` block still keep being localised?.. I
 actually opened this ticket after having to dig through Django's code and
 adding debug statements to understand what was happening.

 Going forward, I see only two possible solutions:

 * either introduce for filters a non-breaking support for context
 (meaning, filters will be able to take context without breaking existing
 code),
 * or, deprecate the `floatformat` filter (and possibly other), replacing
 it (them) with tags.

 I personally favour the first option, but I realise it will require a lot
 of effort.

--
Ticket URL: <https://code.djangoproject.com/ticket/30086#comment:4>
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 unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/067.0ec9c735a1174ab3a8db4746ce5dab5e%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: [Django] #30086: Document how floatformat template filter interacts with the localize template tag

Django
In reply to this post by Django
#30086: Document how floatformat template filter interacts with the localize
template tag
--------------------------------------+------------------------------------
     Reporter:  Meiyer                |                    Owner:  nobody
         Type:  Cleanup/optimization  |                   Status:  new
    Component:  Documentation         |                  Version:  1.11
     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
--------------------------------------+------------------------------------

Comment (by Tim Graham):

 In my 10 years of work with Django, I don't recall another report of this
 issue, so I doubt that such disruptive changes would be acceptable for
 what I perceive as a relatively minor issue. You're welcome to make your
 proposal on the DevelopersMailingList to try to gather a consensus. A
 custom `floatformat` template tag may meet your needs, but deprecating the
 filter seems a bit drastic for the 99% of users who aren't affected by
 this issue.

--
Ticket URL: <https://code.djangoproject.com/ticket/30086#comment:5>
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 unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/067.956c9762efb41fd45355816093dedb74%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: [Django] #30086: Document how floatformat template filter interacts with the localize template tag

Django
In reply to this post by Django
#30086: Document how floatformat template filter interacts with the localize
template tag
--------------------------------------+------------------------------------
     Reporter:  Meiyer                |                    Owner:  nobody
         Type:  Cleanup/optimization  |                   Status:  new
    Component:  Documentation         |                  Version:  1.11
     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
--------------------------------------+------------------------------------

Comment (by Claude Paroz):

 Did someone explore adding support for
 `@register.filter(takes_context=True)`. If someone can produce some proof-
 of-concept code, it may have a chance to get accepted.

--
Ticket URL: <https://code.djangoproject.com/ticket/30086#comment:6>
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 unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To post to this group, send email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/067.9b47dbfb43d2f33d22c6bae48a74624e%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.