Fixed #21959 -- Handled Inf/NaN in widthratio tag.
Thanks rmoe for the report and the patch.
This commit is contained in:
parent
5d263dee30
commit
07ae47f7f8
|
@ -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
|
||||||
|
|
|
@ -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'),
|
||||||
|
|
Loading…
Reference in New Issue