Commit 07ae47f7 authored by Aymeric Augustin's avatar Aymeric Augustin
Browse files

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

Thanks rmoe for the report and the patch.
parent 5d263dee
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -498,11 +498,11 @@ class WidthRatioNode(Node):
            value = float(value)
            max_value = float(max_value)
            ratio = (value / max_value) * max_width
            result = str(int(round(ratio)))
        except ZeroDivisionError:
            return '0'
        except (ValueError, TypeError):
        except (ValueError, TypeError, OverflowError):
            return ''
        result = str(int(round(ratio)))

        if self.asvar:
            context[self.asvar] = result
+2 −0
Original line number Diff line number Diff line
@@ -1668,6 +1668,8 @@ class TemplateTests(TestCase):

            'widthratio18': ('{% widthratio a b 100 as %}', {}, 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 ########################################################
            'with01': ('{% with key=dict.key %}{{ key }}{% endwith %}', {'dict': {'key': 50}}, '50'),