Fixed #21959 -- Handled Inf/NaN in widthratio tag.

Thanks rmoe for the report and the patch.
This commit is contained in:
Aymeric Augustin 2014-02-08 21:00:43 +01:00
parent 5d263dee30
commit 07ae47f7f8
2 changed files with 4 additions and 2 deletions

View File

@ -498,11 +498,11 @@ class WidthRatioNode(Node):
value = float(value) value = float(value)
max_value = float(max_value) max_value = float(max_value)
ratio = (value / max_value) * max_width ratio = (value / max_value) * max_width
result = str(int(round(ratio)))
except ZeroDivisionError: except ZeroDivisionError:
return '0' return '0'
except (ValueError, TypeError): except (ValueError, TypeError, OverflowError):
return '' return ''
result = str(int(round(ratio)))
if self.asvar: if self.asvar:
context[self.asvar] = result context[self.asvar] = result

View File

@ -1668,6 +1668,8 @@ class TemplateTests(TestCase):
'widthratio18': ('{% widthratio a b 100 as %}', {}, template.TemplateSyntaxError), 'widthratio18': ('{% widthratio a b 100 as %}', {}, template.TemplateSyntaxError),
'widthratio19': ('{% widthratio a b 100 not_as variable %}', {}, template.TemplateSyntaxError), 'widthratio19': ('{% widthratio a b 100 not_as variable %}', {}, template.TemplateSyntaxError),
'widthratio20': ('{% widthratio a b 100 %}', {'a': float('inf'), 'b': float('inf')}, ''),
'widthratio21': ('{% widthratio a b 100 %}', {'a': float('inf'), 'b': 2}, ''),
### WITH TAG ######################################################## ### WITH TAG ########################################################
'with01': ('{% with key=dict.key %}{{ key }}{% endwith %}', {'dict': {'key': 50}}, '50'), 'with01': ('{% with key=dict.key %}{{ key }}{% endwith %}', {'dict': {'key': 50}}, '50'),