frontends (jp/blog), plugin blog_import: fixes:

- argparse argument with nargs > 1 and default == {} crashes when reading the user input
    - separate blog import options with a new line
    - convert DBus strings received by the backend to unicode
This commit is contained in:
souliane 2016-02-04 11:44:43 +01:00
commit 0eaf531608
2 changed files with 5 additions and 4 deletions

View file

@ -37,7 +37,7 @@ class Import(base.CommandBase):
self.parser.add_argument('--no-images-upload', action='store_true', help=_(u"do *NOT* upload images (default: do upload images)"))
self.parser.add_argument('--upload-ignore-host', help=_(u"do not upload images from this host (default: upload all images)"))
self.parser.add_argument("--ignore-tls-errors", action="store_true", help=_("ignore invalide TLS certificate for uploads"))
self.parser.add_argument('-o', '--option', action='append', nargs=2, default={}, metavar=(u'NAME', u'VALUE'),
self.parser.add_argument('-o', '--option', action='append', nargs=2, default=[], metavar=(u'NAME', u'VALUE'),
help=_(u"importer specific options (see importer description)"))
self.parser.add_argument('--service', type=base.unicode_decoder, default=u'', metavar=u'PUBSUB_SERVICE',
help=_(u"PubSub service where the items must be uploaded (default: server)"))
@ -77,7 +77,7 @@ class Import(base.CommandBase):
if getattr(self.args, name):
self.parser.error(_(u"{name} argument can't be used without location argument").format(name=name))
if self.args.importer is None:
print u''.join([u'{}: {}'.format(name, desc) for name, desc in self.host.bridge.blogImportList()])
print u'\n'.join([u'{}: {}'.format(name, desc) for name, desc in self.host.bridge.blogImportList()])
else:
try:
short_desc, long_desc = self.host.bridge.blogImportDesc(self.args.importer)
@ -90,7 +90,7 @@ class Import(base.CommandBase):
self.host.quit()
else:
# we have a location, an import is requested
options = dict(self.args.option)
options = {key: value for key, value in self.args.option}
if self.args.host:
options['host'] = self.args.host
if self.args.ignore_tls_errors:

View file

@ -94,12 +94,13 @@ class BlogImportPlugin(object):
def _blogImport(self, name, location, options, pubsub_service='', profile=C.PROF_KEY_DEFAULT):
client = self.host.getClient(profile)
options = {key: unicode(value) for key, value in options.iteritems()}
for option in BOOL_OPTIONS:
try:
options[option] = C.bool(options[option])
except KeyError:
pass
return self.blogImport(client, name, location, options)
return self.blogImport(client, unicode(name), unicode(location), options)
@defer.inlineCallbacks
def blogImport(self, client, name, location, options=None, pubsub_service=None):