From 789cba4378a14c1651a780559e2103aef3d8d67a Mon Sep 17 00:00:00 2001 From: John Dennis Date: Thu, 4 Mar 2010 18:41:51 -0500 Subject: fix bug 570392, command help traceback As a consequence of using doc=_('some message') the _() method was returning a Gettext instance, thus when optparse was handed the help text it received a Gettext instance instead of a basestring. optparse tried to operate on the Gettext instance as if it were a basestring and since it wasn't threw an exception. The fix is to promote (e.g. cast) the option.doc to unicode. If the option.doc was a str it becomes unicode, if it was unicode nothing happens, if it was Gettext (or any other object implementing the __unicode__() method) object is converted to unicode via the objects rules. By the way, while debugging this I discovered strings which were not localized, sometimes option.doc would be a str and sometimes a Gettext object. In a subsequent patch I'll fix all those unlocalized doc strings, but I don't want to bury this fix along with a load of string fixes. --- ipalib/cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ipalib/cli.py') diff --git a/ipalib/cli.py b/ipalib/cli.py index 715f2e177..a05722d74 100644 --- a/ipalib/cli.py +++ b/ipalib/cli.py @@ -828,7 +828,7 @@ class cli(backend.Executioner): for option in cmd.options(): kw = dict( dest=option.name, - help=option.doc, + help=unicode(option.doc), ) if option.password and self.env.interactive: kw['action'] = 'store_true' -- cgit