Fixed #11166 -- {% widthratio %} should return 0 when the maximum is 0, no matter the value.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@17224 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Aymeric Augustin 2011-12-17 10:27:14 +00:00
parent 8767439af4
commit a4e516b593
2 changed files with 7 additions and 5 deletions

View File

@ -435,7 +435,7 @@ class WidthRatioNode(Node):
def render(self, context): def render(self, context):
try: try:
value = self.val_expr.resolve(context) value = self.val_expr.resolve(context)
maxvalue = self.max_expr.resolve(context) max_value = self.max_expr.resolve(context)
max_width = int(self.max_width.resolve(context)) max_width = int(self.max_width.resolve(context))
except VariableDoesNotExist: except VariableDoesNotExist:
return '' return ''
@ -443,9 +443,11 @@ class WidthRatioNode(Node):
raise TemplateSyntaxError("widthratio final argument must be an number") raise TemplateSyntaxError("widthratio final argument must be an number")
try: try:
value = float(value) value = float(value)
maxvalue = float(maxvalue) max_value = float(max_value)
ratio = (value / maxvalue) * max_width ratio = (value / max_value) * max_width
except (ValueError, ZeroDivisionError): except ZeroDivisionError:
return '0'
except ValueError:
return '' return ''
return str(int(round(ratio))) return str(int(round(ratio)))

View File

@ -1429,7 +1429,7 @@ class Templates(unittest.TestCase):
### WIDTHRATIO TAG ######################################################## ### WIDTHRATIO TAG ########################################################
'widthratio01': ('{% widthratio a b 0 %}', {'a':50,'b':100}, '0'), 'widthratio01': ('{% widthratio a b 0 %}', {'a':50,'b':100}, '0'),
'widthratio02': ('{% widthratio a b 100 %}', {'a':0,'b':0}, ''), 'widthratio02': ('{% widthratio a b 100 %}', {'a':0,'b':0}, '0'),
'widthratio03': ('{% widthratio a b 100 %}', {'a':0,'b':100}, '0'), 'widthratio03': ('{% widthratio a b 100 %}', {'a':0,'b':100}, '0'),
'widthratio04': ('{% widthratio a b 100 %}', {'a':50,'b':100}, '50'), 'widthratio04': ('{% widthratio a b 100 %}', {'a':50,'b':100}, '50'),
'widthratio05': ('{% widthratio a b 100 %}', {'a':100,'b':100}, '100'), 'widthratio05': ('{% widthratio a b 100 %}', {'a':100,'b':100}, '100'),