[Django] #21959: widthratio templatetag fails to handle NaN ratio

16 views
Skip to first unread message

Django

unread,
Feb 5, 2014, 7:30:04 PM2/5/14
to django-...@googlegroups.com
#21959: widthratio templatetag fails to handle NaN ratio
---------------------------------+--------------------
Reporter: rmoe | Owner:
Type: Bug | Status: new
Component: Template system | Version: master
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 1
Easy pickings: 0 | UI/UX: 0
---------------------------------+--------------------
When value or max_value are float('inf') or float('nan') the ratio
calculation can raise an exception.

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

Django

unread,
Feb 5, 2014, 10:33:06 PM2/5/14
to django-...@googlegroups.com
#21959: widthratio templatetag fails to handle NaN ratio
---------------------------------+--------------------------------------

Reporter: rmoe | Owner:
Type: Bug | Status: new
Component: Template system | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Unreviewed
Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0

Easy pickings: 0 | UI/UX: 0
---------------------------------+--------------------------------------
Changes (by jwiel86):

* needs_better_patch: => 0
* needs_tests: => 0
* needs_docs: => 0


Comment:

Hi, thanks for reporting. Do you mind giving more information on how to
reproduce this exception so a newbie could partake? Thanks!

--
Ticket URL: <https://code.djangoproject.com/ticket/21959#comment:1>

Django

unread,
Feb 6, 2014, 12:19:34 PM2/6/14
to django-...@googlegroups.com
#21959: widthratio templatetag fails to handle NaN ratio
---------------------------------+--------------------------------------

Reporter: rmoe | Owner:
Type: Bug | Status: new
Component: Template system | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Unreviewed

Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
---------------------------------+--------------------------------------

Comment (by rmoe):

You just need to call widthratio with float('inf') as both the value and
max_value. like so:


{{{
{% widthratio 'inf' 'inf' 100 %}
}}}

Which will raise this (because ratio is NaN and can't be converted to an
integer):


{{{
ValueError at /project/
cannot convert float NaN to integer

Request Method: GET
Django Version: 1.5.4
Exception Type: ValueError
Exception Value: cannot convert float NaN to integer
Exception Location: /usr/lib/python2.7/dist-
packages/django/template/defaulttags.py in render, line 467
}}}


For some additional context, this was encountered in the Horizon component
of the OpenStack project.
https://github.com/openstack/horizon/blob/master/horizon/templates/horizon/common/_limit_summary.html#L6

When disabling quotas in the Nova component (the data it's trying to build
the pie charts for) all quota values are set to -1 which equates to an
infinite quota. So in the case where quotas are disabled
usage.limits.totalInstancesUsed and usage.limits.maxTotalInstances are
both float('inf'). This breaks the project overview page because of the
exception raised from the widthratio templatetag.

--
Ticket URL: <https://code.djangoproject.com/ticket/21959#comment:2>

Django

unread,
Feb 8, 2014, 3:00:56 PM2/8/14
to django-...@googlegroups.com
#21959: widthratio templatetag fails to handle NaN ratio
---------------------------------+------------------------------------

Reporter: rmoe | Owner:
Type: Bug | Status: new
Component: Template system | Version: master
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted

Has patch: 1 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
---------------------------------+------------------------------------
Changes (by aaugustin):

* stage: Unreviewed => Accepted


--
Ticket URL: <https://code.djangoproject.com/ticket/21959#comment:3>

Django

unread,
Feb 8, 2014, 3:02:29 PM2/8/14
to django-...@googlegroups.com
#21959: widthratio templatetag fails to handle NaN ratio
-------------------------------------+-------------------------------------
Reporter: rmoe | Owner: Aymeric
Type: Bug | Augustin <aymeric.augustin@…>
Component: Template system | Status: closed
Severity: Normal | Version: master
Keywords: | Resolution: fixed
Has patch: 1 | Triage Stage: Accepted
Needs tests: 0 | Needs documentation: 0
Easy pickings: 0 | Patch needs improvement: 0
| UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Aymeric Augustin <aymeric.augustin@…>):

* status: new => closed
* owner: => Aymeric Augustin <aymeric.augustin@…>
* resolution: => fixed


Comment:

In [changeset:"07ae47f7f8b5d5f80238ea3018163cad12917852"]:
{{{
#!CommitTicketReference repository=""
revision="07ae47f7f8b5d5f80238ea3018163cad12917852"
Fixed #21959 -- Handled Inf/NaN in widthratio tag.

Thanks rmoe for the report and the patch.
}}}

--
Ticket URL: <https://code.djangoproject.com/ticket/21959#comment:4>

Reply all
Reply to author
Forward
0 new messages