#25571: When number argument is not an integer ungettext_lazy's return value
evaluates to False
-----------------------------------+--------------------
     Reporter:  teddy_beer_maniac  |      Owner:  nobody
         Type:  Bug                |     Status:  new
    Component:  Utilities          |    Version:  1.8
     Severity:  Normal             |   Keywords:
 Triage Stage:  Unreviewed         |  Has patch:  0
Easy pickings:  0                  |      UI/UX:  0
-----------------------------------+--------------------
 When I tried to pass ungettext_lazy as the message argument for
 MinLengthValidator:
 {{{
 MinLengthValidator(4, ungettext_lazy(
     'Name has to be at least %(limit_value)d character long.',
     'Name has to be at least %(limit_value)d characters long.',
 'limit_value'
 ))
 }}}
 the default message was still used. After fiddling around I found out,
 that it's because ungettext_lazy's return value's `__len__` returns 0
 which makes it evaluate to False and fail a check in BaseValidator's
 constructor.
 {{{
 >>> len(ungettext_lazy('%(number)d object', '%(number)d objects',
 'number'))
 0
 >>> len(ungettext_lazy('%(number)d object', '%(number)d objects', 1))
 17
 >>> bool(ungettext_lazy('%(number)d object', '%(number)d objects',
 'number'))
 False
 >>> bool(ungettext_lazy('%(number)d object', '%(number)d objects', 1))
 True
 }}}
 I'm not sure if this behaviour is a bug, or is it by design and it's a bug
 in BaseValidator's constructor, but I assume it's the former.

 Using django 1.8.5, checked on python 2.7.9 and 3.4.3.

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

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/060.c8343e16b3b48889b7655a5d8446b8b9%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to