plugin blog_import_dokuwiki: also uses the generic image uploader from blog_import (when media_repo is empty and OPT_UPLOAD_IMAGES is True)

This commit is contained in:
souliane 2016-02-04 18:56:53 +01:00
commit 7f2d6e56c7
2 changed files with 16 additions and 12 deletions

View file

@ -281,6 +281,7 @@ class BlogImportPlugin(object):
tmp_dir = tempfile.mkdtemp()
try:
# TODO: would be nice to also update the hyperlinks to these images, e.g. when you have <a href="{url}"><img src="{url}"></a>
for img_elt in xml_tools.findAll(top_elt, ['img']):
yield self.imgFilters(client, img_elt, options, opt_host, tmp_dir)
finally:

View file

@ -114,12 +114,7 @@ class Importer(DokuWiki):
DokuWiki.__init__(self, url, user, passwd)
self.url = url
self.media_repo = media_repo
self.temp_dir = None
if self.media_repo:
self.temp_dir = tempfile.mkdtemp()
self.info_msg = _("DokuWiki media files will be downloaded to %s - to finish the import you will need to upload them to %s" % (self.temp_dir, self.media_repo))
else:
self.info_msg = _("DokuWiki media files will stay on %s - some of them may be protected by DokuWiki ACL and will not be accessible." % url)
self.temp_dir = tempfile.mkdtemp() if self.media_repo else None
self.limit = limit
self.posts_data = OrderedDict()
@ -267,6 +262,7 @@ class Importer(DokuWiki):
def moveMedia(self, link, subs):
"""Move a media from the DokuWiki host to the new repository.
This also updates the hyperlinks to internal media files.
@param link (unicode): media link
@param subs (dict): substitutions data
"""
@ -369,15 +365,20 @@ class DokuwikiImport(object):
passwd = options["passwd"]
except KeyError:
raise exceptions.DataError('parameter "passwd" is required')
opt_upload_images = options.get(OPT_UPLOAD_IMAGES, None)
try:
media_repo = options["media_repo"]
if opt_upload_images:
options[OPT_UPLOAD_IMAGES] = False # force using --no-images-upload
info_msg = _("DokuWiki media files will be *downloaded* to {temp_dir} - to finish the import you have to upload them *manually* to {media_repo}")
except KeyError:
media_repo = DEFAULT_MEDIA_REPO
if options.get(OPT_UPLOAD_IMAGES, None):
# TODO: when media_repo is not defined or empty, we should not force this option
options[OPT_UPLOAD_IMAGES] = False
msg = _(u"Option --no-images-upload will be used by force.")
self.host.actionNew({'xmlui': xml_tools.note(msg).toXml()}, profile=client.profile)
if opt_upload_images:
info_msg = _("DokuWiki media files will be *uploaded* to the XMPP server. Hyperlinks to these media may not been updated though.")
else:
info_msg = _("DokuWiki media files will *stay* on {location} - some of them may be protected by DokuWiki ACL and will not be accessible.")
try:
namespace = options["namespace"]
except KeyError:
@ -386,7 +387,9 @@ class DokuwikiImport(object):
limit = options["limit"]
except KeyError:
limit = DEFAULT_LIMIT
dk_importer = Importer(location, user, passwd, media_repo, limit)
self.host.actionNew({'xmlui': xml_tools.note(dk_importer.info_msg).toXml()}, profile=client.profile)
info_msg = info_msg.format(temp_dir=dk_importer.temp_dir, media_repo=media_repo, location=location)
self.host.actionNew({'xmlui': xml_tools.note(info_msg).toXml()}, profile=client.profile)
d = threads.deferToThread(dk_importer.process, client, namespace)
return d