Mercurial > libervia-backend
annotate src/plugins/plugin_blog_import_dokuwiki.py @ 1851:ff603003d40a
plugin misc_upload: fixes things that have been forgotten after a refactoring
author | souliane <souliane@mailoo.org> |
---|---|
date | Tue, 23 Feb 2016 15:02:03 +0100 |
parents | 489b968b3723 |
children | 1a9c12644552 |
rev | line source |
---|---|
1841
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
1 #!/usr/bin/python |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
3 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
4 # SàT plugin to import external blogs |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
5 # Copyright (C) 2009-2016 Jérôme Poisson (goffi@goffi.org) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
6 # Copyright (C) 2013-2016 Adrien Cossa (souliane@mailoo.org) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
7 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
8 # This program is free software: you can redistribute it and/or modify |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
9 # it under the terms of the GNU Affero General Public License as published by |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
10 # the Free Software Foundation, either version 3 of the License, or |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
11 # (at your option) any later version. |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
12 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
13 # This program is distributed in the hope that it will be useful, |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
16 # GNU Affero General Public License for more details. |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
17 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
18 # You should have received a copy of the GNU Affero General Public License |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
19 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
20 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
21 from sat.core.i18n import _, D_ |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
22 from sat.core.constants import Const as C |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
23 from sat.core.log import getLogger |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
24 log = getLogger(__name__) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
25 from sat.core import exceptions |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
26 from sat.tools import xml_tools |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
27 from twisted.internet import threads |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
28 from collections import OrderedDict |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
29 import calendar |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
30 import urllib |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
31 import urlparse |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
32 import tempfile |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
33 import re |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
34 import time |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
35 import os.path |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
36 try: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
37 from dokuwiki import DokuWiki, DokuWikiError # this is a new dependency |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
38 except ImportError: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
39 raise exceptions.MissingModule(u'Missing module dokuwiki, please install it with "pip install dokuwiki"') |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
40 try: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
41 from PIL import Image # this is already needed by plugin XEP-0054 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
42 except: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
43 raise exceptions.MissingModule(u"Missing module pillow, please download/install it from https://python-pillow.github.io") |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
44 try: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
45 from plugin_blog_import import OPT_HOST, OPT_UPLOAD_IMAGES |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
46 except: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
47 raise exceptions.MissingModule(u'Missing module plugin_blog_import, please install the Salut à Toi "BLOG_IMPORT" plugin') |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
48 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
49 PLUGIN_INFO = { |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
50 "name": "Dokuwiki import", |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
51 "import_name": "IMPORT_DOKUWIKI", |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
52 "type": C.PLUG_TYPE_BLOG, |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
53 "dependencies": ["BLOG_IMPORT"], |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
54 "main": "DokuwikiImport", |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
55 "handler": "no", |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
56 "description": _("""Blog importer for Dokuwiki blog engine.""") |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
57 } |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
58 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
59 SHORT_DESC = D_(u"import posts from Dokuwiki blog engine") |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
60 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
61 LONG_DESC = D_(u"""This importer handle Dokuwiki blog engine. |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
62 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
63 To use it, you need an admin access to a running Dokuwiki website |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
64 (local or on the Internet). The importer retrieves the data using |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
65 the XMLRPC Dokuwiki API. |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
66 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
67 You can specify a namespace (that could be a namespace directory |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
68 or a single post) or leave it empty to use the root namespace "/" |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
69 and import all the posts. |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
70 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
71 You can specify a new media repository to modify the internal |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
72 media links and make them point to the URL of your choice, but |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
73 note that the upload is not done automatically: a temporary |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
74 directory will be created on your local drive and you will |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
75 need to upload it yourself to your repository via SSH or FTP. |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
76 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
77 Following options are recognized: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
78 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
79 location: DokuWiki site URL |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
80 user: DokuWiki admin user |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
81 passwd: DokuWiki admin password |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
82 namespace: DokuWiki namespace to import (default: root namespace "/") |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
83 media_repo: URL to the new remote media repository (default: none) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
84 limit: maximal number of posts to import (default: 100) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
85 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
86 Example of usage: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
87 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
88 jp import dokuwiki -p dave --pwd xxxxxx --connect |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
89 http://127.0.1.1 -o user souliane -o passwd qwertz |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
90 -o namespace public:2015:10 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
91 -o media_repo http://media.diekulturvermittlung.at |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
92 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
93 This retrieves the 100 last blog posts from http://127.0.1.1 that |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
94 are inside the namespace "public:2015:10" using the Dokuwiki user |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
95 "souliane", and it imports them to sat profile dave's microblog node. |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
96 Internal Dokuwiki media that were hosted on http://127.0.1.1 are now |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
97 pointing to http://media.diekulturvermittlung.at. |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
98 """) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
99 DEFAULT_MEDIA_REPO = "" |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
100 DEFAULT_NAMESPACE = "/" |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
101 DEFAULT_LIMIT = 100 # you might get a DBUS timeout (no reply) if it lasts too long |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
102 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
103 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
104 class Importer(DokuWiki): |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
105 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
106 def __init__(self, url, user, passwd, media_repo=DEFAULT_MEDIA_REPO, limit=DEFAULT_LIMIT): |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
107 """ |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
108 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
109 @param url (unicode): DokuWiki site URL |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
110 @param user (unicode): DokuWiki admin user |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
111 @param passwd (unicode): DokuWiki admin password |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
112 @param media_repo (unicode): New remote media repository |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
113 """ |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
114 DokuWiki.__init__(self, url, user, passwd) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
115 self.url = url |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
116 self.media_repo = media_repo |
1844
489b968b3723
plugin blog_import_dokuwiki: also uses the generic image uploader from blog_import (when media_repo is empty and OPT_UPLOAD_IMAGES is True)
souliane <souliane@mailoo.org>
parents:
1843
diff
changeset
|
117 self.temp_dir = tempfile.mkdtemp() if self.media_repo else None |
1841
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
118 self.limit = limit |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
119 self.posts_data = OrderedDict() |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
120 |
1842
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
121 def getPostId(self, post): |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
122 """Return a unique and constant post id |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
123 |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
124 @param post(dict): parsed post data |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
125 @return (unicode): post unique item id |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
126 """ |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
127 return unicode(post['id']) |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
128 |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
129 def getPostUpdated(self, post): |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
130 """Return the update date. |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
131 |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
132 @param post(dict): parsed post data |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
133 @return (unicode): update date |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
134 """ |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
135 return unicode(post['mtime']) |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
136 |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
137 def getPostPublished(self, post): |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
138 """Try to parse the date from the message ID, else use "mtime". |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
139 |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
140 The date can be extracted if the message ID looks like one of: |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
141 - namespace:YYMMDD_short_title |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
142 - namespace:YYYYMMDD_short_title |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
143 @param post (dict): parsed post data |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
144 @return (unicode): publication date |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
145 """ |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
146 id_, default = unicode(post["id"]), unicode(post["mtime"]) |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
147 try: |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
148 date = id_.split(":")[-1].split("_")[0] |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
149 except KeyError: |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
150 return default |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
151 try: |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
152 time_struct = time.strptime(date, "%y%m%d") |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
153 except ValueError: |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
154 try: |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
155 time_struct = time.strptime(date, "%Y%m%d") |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
156 except ValueError: |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
157 return default |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
158 return unicode(calendar.timegm(time_struct)) |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
159 |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
160 def processPost(self, post, profile_jid): |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
161 """Process a single page. |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
162 |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
163 @param post (dict): parsed post data |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
164 @param profile_jid |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
165 """ |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
166 # get main information |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
167 id_ = self.getPostId(post) |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
168 updated = self.getPostUpdated(post) |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
169 published = self.getPostPublished(post) |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
170 |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
171 # manage links |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
172 backlinks = self.pages.backlinks(id_) |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
173 for link in self.pages.links(id_): |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
174 if link["type"] != "extern": |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
175 assert link["type"] == "local" |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
176 page = link["page"] |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
177 backlinks.append(page[1:] if page.startswith(":") else page) |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
178 |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
179 content = self.pages.get(id_) |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
180 content_xhtml = self.processContent(self.pages.html(id_), backlinks, profile_jid) |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
181 |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
182 # XXX: title is already in content_xhtml and difficult to remove, so leave it |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
183 # title = content.split("\n")[0].strip(u"\ufeff= ") |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
184 |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
185 # build the extra data dictionary |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
186 mb_data = {"id": id_, |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
187 "published": published, |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
188 "updated": updated, |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
189 "author": profile_jid.user, |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
190 # "content": content, # when passed, it is displayed in Libervia instead of content_xhtml |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
191 "content_xhtml": content_xhtml, |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
192 # "title": title, |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
193 "allow_comments": "true", |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
194 } |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
195 |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
196 # find out if the message access is public or restricted |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
197 namespace = id_.split(":")[0] |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
198 if namespace and namespace.lower() not in ("public", "/"): |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
199 mb_data["group"] = namespace # roster group must exist |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
200 |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
201 self.posts_data[id_] = {'blog': mb_data, 'comments':[[]]} |
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
202 |
1841
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
203 def process(self, client, namespace=DEFAULT_NAMESPACE): |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
204 """Process a namespace or a single page. |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
205 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
206 @param namespace (unicode): DokuWiki namespace (or page) to import |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
207 """ |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
208 profile_jid = client.jid |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
209 log.info("Importing data from DokuWiki %s" % self.version) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
210 try: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
211 pages_list = self.pages.list(namespace) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
212 except DokuWikiError: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
213 log.warning('Could not list Dokuwiki pages: please turn the "display_errors" setting to "Off" in the php.ini of the webserver hosting DokuWiki.') |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
214 return |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
215 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
216 if not pages_list: # namespace is actually a page? |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
217 names = namespace.split(":") |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
218 real_namespace = ":".join(names[0:-1]) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
219 pages_list = self.pages.list(real_namespace) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
220 pages_list = [page for page in pages_list if page["id"] == namespace] |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
221 namespace = real_namespace |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
222 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
223 count = 0 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
224 for page in pages_list: |
1842
9fd517248dc8
plugin blog_import_dokuwiki: refactor to make it look more similar to blog_import_dotclear
souliane <souliane@mailoo.org>
parents:
1841
diff
changeset
|
225 self.processPost(page, profile_jid) |
1841
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
226 count += 1 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
227 if count >= self.limit : |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
228 break |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
229 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
230 return (self.posts_data.itervalues(), len(self.posts_data)) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
231 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
232 def processContent(self, text, backlinks, profile_jid): |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
233 """Do text substitutions and file copy. |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
234 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
235 @param text (unicode): message content |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
236 @param backlinks (list[unicode]): list of backlinks |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
237 """ |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
238 text = text.strip(u"\ufeff") # this is at the beginning of the file (BOM) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
239 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
240 for backlink in backlinks: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
241 src = '/doku.php?id=%s"' % backlink |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
242 tgt = '/blog/%s/%s" target="#"' % (profile_jid.user, backlink) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
243 text = text.replace(src, tgt) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
244 |
1843
a51355982f11
plugin blog_import_dokuwiki: fixes wrong URL when a substitution occurs twice
souliane <souliane@mailoo.org>
parents:
1842
diff
changeset
|
245 subs = {} |
1841
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
246 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
247 link_pattern = r"""<(img|a)[^>]* (src|href)="([^"]+)"[^>]*>""" |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
248 for tag in re.finditer(link_pattern, text): |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
249 type_, attr, link = tag.group(1), tag.group(2), tag.group(3) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
250 assert (type_ == "img" and attr == "src") or (type_ == "a" and attr == "href") |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
251 if re.match(r"^\w*://", link): # absolute URL to link directly |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
252 continue |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
253 if self.media_repo: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
254 self.moveMedia(link, subs) |
1843
a51355982f11
plugin blog_import_dokuwiki: fixes wrong URL when a substitution occurs twice
souliane <souliane@mailoo.org>
parents:
1842
diff
changeset
|
255 elif link not in subs: |
a51355982f11
plugin blog_import_dokuwiki: fixes wrong URL when a substitution occurs twice
souliane <souliane@mailoo.org>
parents:
1842
diff
changeset
|
256 subs[link] = urlparse.urljoin(self.url, link) |
1841
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
257 |
1843
a51355982f11
plugin blog_import_dokuwiki: fixes wrong URL when a substitution occurs twice
souliane <souliane@mailoo.org>
parents:
1842
diff
changeset
|
258 for url, new_url in subs.iteritems(): |
1841
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
259 text = text.replace(url, new_url) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
260 return text |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
261 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
262 def moveMedia(self, link, subs): |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
263 """Move a media from the DokuWiki host to the new repository. |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
264 |
1844
489b968b3723
plugin blog_import_dokuwiki: also uses the generic image uploader from blog_import (when media_repo is empty and OPT_UPLOAD_IMAGES is True)
souliane <souliane@mailoo.org>
parents:
1843
diff
changeset
|
265 This also updates the hyperlinks to internal media files. |
1841
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
266 @param link (unicode): media link |
1843
a51355982f11
plugin blog_import_dokuwiki: fixes wrong URL when a substitution occurs twice
souliane <souliane@mailoo.org>
parents:
1842
diff
changeset
|
267 @param subs (dict): substitutions data |
1841
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
268 """ |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
269 url = urlparse.urljoin(self.url, link) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
270 user_media = re.match(r"(/lib/exe/\w+.php\?)(.*)", link) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
271 thumb_width = None |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
272 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
273 if user_media: # media that has been added by the user |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
274 params = urlparse.parse_qs(urlparse.urlparse(url).query) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
275 try: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
276 media = params["media"][0] |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
277 except KeyError: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
278 log.warning("No media found in fetch URL: %s" % user_media.group(2)) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
279 return |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
280 if re.match(r"^\w*://", media): # external URL to link directly |
1843
a51355982f11
plugin blog_import_dokuwiki: fixes wrong URL when a substitution occurs twice
souliane <souliane@mailoo.org>
parents:
1842
diff
changeset
|
281 subs[link] = media |
1841
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
282 return |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
283 try: # create thumbnail |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
284 thumb_width = params["w"][0] |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
285 except KeyError: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
286 pass |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
287 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
288 filename = media.replace(":", "/") |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
289 # XXX: avoid "precondition failed" error (only keep the media parameter) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
290 url = urlparse.urljoin(self.url, "/lib/exe/fetch.php?media=%s" % media) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
291 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
292 elif link.startswith("/lib/plugins/"): |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
293 # other link added by a plugin or something else |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
294 filename = link[13:] |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
295 else: # fake alert... there's no media (or we don't handle it yet) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
296 return |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
297 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
298 filepath = os.path.join(self.temp_dir, filename) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
299 self.downloadMedia(url, filepath) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
300 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
301 if thumb_width: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
302 filename = os.path.join("thumbs", thumb_width, filename) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
303 thumbnail = os.path.join(self.temp_dir, filename) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
304 self.createThumbnail(filepath, thumbnail, thumb_width) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
305 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
306 new_url = os.path.join(self.media_repo, filename) |
1843
a51355982f11
plugin blog_import_dokuwiki: fixes wrong URL when a substitution occurs twice
souliane <souliane@mailoo.org>
parents:
1842
diff
changeset
|
307 subs[link] = new_url |
1841
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
308 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
309 def downloadMedia(self, source, dest): |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
310 """Copy media to localhost. |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
311 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
312 @param source (unicode): source url |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
313 @param dest (unicode): target path |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
314 """ |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
315 dirname = os.path.dirname(dest) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
316 if not os.path.exists(dest): |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
317 if not os.path.exists(dirname): |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
318 os.makedirs(dirname) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
319 urllib.urlretrieve(source, dest) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
320 log.debug("DokuWiki media file copied to %s" % dest) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
321 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
322 def createThumbnail(self, source, dest, width): |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
323 """Create a thumbnail. |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
324 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
325 @param source (unicode): source file path |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
326 @param dest (unicode): destination file path |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
327 @param width (unicode): thumbnail's width |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
328 """ |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
329 thumb_dir = os.path.dirname(dest) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
330 if not os.path.exists(thumb_dir): |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
331 os.makedirs(thumb_dir) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
332 try: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
333 im = Image.open(source) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
334 im.thumbnail((width, int(width) * im.size[0] / im.size[1])) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
335 im.save(dest) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
336 log.debug("DokuWiki media thumbnail created: %s" % dest) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
337 except IOError: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
338 log.error("Cannot create DokuWiki media thumbnail %s" % dest) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
339 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
340 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
341 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
342 class DokuwikiImport(object): |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
343 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
344 def __init__(self, host): |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
345 log.info(_("plugin Dokuwiki Import initialization")) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
346 self.host = host |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
347 host.plugins['BLOG_IMPORT'].register('dokuwiki', self.DkImport, SHORT_DESC, LONG_DESC) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
348 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
349 def DkImport(self, client, location, options=None): |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
350 """Import from DokuWiki to PubSub |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
351 |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
352 @param location (unicode): DokuWiki site URL |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
353 @param options (dict, None): DokuWiki import parameters |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
354 - user (unicode): DokuWiki admin user |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
355 - passwd (unicode): DokuWiki admin password |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
356 - namespace (unicode): DokuWiki namespace to import |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
357 - media_repo (unicode): New remote media repository |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
358 """ |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
359 options[OPT_HOST] = location |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
360 try: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
361 user = options["user"] |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
362 except KeyError: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
363 raise exceptions.DataError('parameter "user" is required') |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
364 try: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
365 passwd = options["passwd"] |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
366 except KeyError: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
367 raise exceptions.DataError('parameter "passwd" is required') |
1844
489b968b3723
plugin blog_import_dokuwiki: also uses the generic image uploader from blog_import (when media_repo is empty and OPT_UPLOAD_IMAGES is True)
souliane <souliane@mailoo.org>
parents:
1843
diff
changeset
|
368 |
489b968b3723
plugin blog_import_dokuwiki: also uses the generic image uploader from blog_import (when media_repo is empty and OPT_UPLOAD_IMAGES is True)
souliane <souliane@mailoo.org>
parents:
1843
diff
changeset
|
369 opt_upload_images = options.get(OPT_UPLOAD_IMAGES, None) |
1841
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
370 try: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
371 media_repo = options["media_repo"] |
1844
489b968b3723
plugin blog_import_dokuwiki: also uses the generic image uploader from blog_import (when media_repo is empty and OPT_UPLOAD_IMAGES is True)
souliane <souliane@mailoo.org>
parents:
1843
diff
changeset
|
372 if opt_upload_images: |
489b968b3723
plugin blog_import_dokuwiki: also uses the generic image uploader from blog_import (when media_repo is empty and OPT_UPLOAD_IMAGES is True)
souliane <souliane@mailoo.org>
parents:
1843
diff
changeset
|
373 options[OPT_UPLOAD_IMAGES] = False # force using --no-images-upload |
489b968b3723
plugin blog_import_dokuwiki: also uses the generic image uploader from blog_import (when media_repo is empty and OPT_UPLOAD_IMAGES is True)
souliane <souliane@mailoo.org>
parents:
1843
diff
changeset
|
374 info_msg = _("DokuWiki media files will be *downloaded* to {temp_dir} - to finish the import you have to upload them *manually* to {media_repo}") |
1841
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
375 except KeyError: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
376 media_repo = DEFAULT_MEDIA_REPO |
1844
489b968b3723
plugin blog_import_dokuwiki: also uses the generic image uploader from blog_import (when media_repo is empty and OPT_UPLOAD_IMAGES is True)
souliane <souliane@mailoo.org>
parents:
1843
diff
changeset
|
377 if opt_upload_images: |
489b968b3723
plugin blog_import_dokuwiki: also uses the generic image uploader from blog_import (when media_repo is empty and OPT_UPLOAD_IMAGES is True)
souliane <souliane@mailoo.org>
parents:
1843
diff
changeset
|
378 info_msg = _("DokuWiki media files will be *uploaded* to the XMPP server. Hyperlinks to these media may not been updated though.") |
489b968b3723
plugin blog_import_dokuwiki: also uses the generic image uploader from blog_import (when media_repo is empty and OPT_UPLOAD_IMAGES is True)
souliane <souliane@mailoo.org>
parents:
1843
diff
changeset
|
379 else: |
489b968b3723
plugin blog_import_dokuwiki: also uses the generic image uploader from blog_import (when media_repo is empty and OPT_UPLOAD_IMAGES is True)
souliane <souliane@mailoo.org>
parents:
1843
diff
changeset
|
380 info_msg = _("DokuWiki media files will *stay* on {location} - some of them may be protected by DokuWiki ACL and will not be accessible.") |
489b968b3723
plugin blog_import_dokuwiki: also uses the generic image uploader from blog_import (when media_repo is empty and OPT_UPLOAD_IMAGES is True)
souliane <souliane@mailoo.org>
parents:
1843
diff
changeset
|
381 |
1841
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
382 try: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
383 namespace = options["namespace"] |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
384 except KeyError: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
385 namespace = DEFAULT_NAMESPACE |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
386 try: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
387 limit = options["limit"] |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
388 except KeyError: |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
389 limit = DEFAULT_LIMIT |
1844
489b968b3723
plugin blog_import_dokuwiki: also uses the generic image uploader from blog_import (when media_repo is empty and OPT_UPLOAD_IMAGES is True)
souliane <souliane@mailoo.org>
parents:
1843
diff
changeset
|
390 |
1841
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
391 dk_importer = Importer(location, user, passwd, media_repo, limit) |
1844
489b968b3723
plugin blog_import_dokuwiki: also uses the generic image uploader from blog_import (when media_repo is empty and OPT_UPLOAD_IMAGES is True)
souliane <souliane@mailoo.org>
parents:
1843
diff
changeset
|
392 info_msg = info_msg.format(temp_dir=dk_importer.temp_dir, media_repo=media_repo, location=location) |
489b968b3723
plugin blog_import_dokuwiki: also uses the generic image uploader from blog_import (when media_repo is empty and OPT_UPLOAD_IMAGES is True)
souliane <souliane@mailoo.org>
parents:
1843
diff
changeset
|
393 self.host.actionNew({'xmlui': xml_tools.note(info_msg).toXml()}, profile=client.profile) |
1841
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
394 d = threads.deferToThread(dk_importer.process, client, namespace) |
7717975b3ec3
plugin blog_import_dokuwiki: first draft
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
395 return d |