Attachment 'ImportHtml.py'
Download 1 """
2 MoinMoin - ImportHtml action
3
4 """
5
6 import mimetypes, string, sys, time, HTMLParser
7 from MoinMoin import config, user, util, wikiutil, webapi
8 from MoinMoin.Page import Page
9 from MoinMoin.PageEditor import PageEditor
10
11
12 from MoinMoin.HTML2MoinMoin import HTML2MoinMoin
13 import urllib, cStringIO
14
15 #############################################################################
16 ### Create parts of the Web interface
17 #############################################################################
18
19 def show_form(pagename, request):
20 webapi.http_headers(request)
21 request.write(
22 """
23 <form action="%(baseurl)s/%(pagename)s" method="POST" enctype="multipart/form-d\ata">
24 <input type="hidden" name="action" value="ImportHtml">
25 <input type="radio" name="do" value="markup">Show markup<br>
26 <input type="radio" name="do" value="wiki">Show as wiki page<br>
27 <input type="radio" name="do" value="import">Append to page<br>
28 URL: <input type="text" name="url" size="50">
29 <input type="submit" value="Get">
30 </form>
31 """ % {
32 'baseurl': webapi.getBaseURL(),
33 'pagename': wikiutil.quoteWikiname(pagename),
34 })
35
36 wikiutil.send_footer(request, pagename, showpage=1)
37
38
39 def get_content(request):
40 if request.form.has_key("url"):
41 try:
42 return urllib.urlopen(request.form["url"].value).read()
43 except IOError:
44 return ""
45 else:
46 return ""
47
48 def get_parsed(request):
49 p = HTML2MoinMoin()
50 p.output = cStringIO.StringIO()
51 try:
52 p.feed(get_content(request))
53 p.close()
54 except:
55 import traceback
56 traceback.print_exc(None, p.output)
57 return p.output.getvalue()
58
59 def show_markup(pagename, request):
60 webapi.http_headers(request, ["Content-type: text/plain"])
61 request.write(get_parsed(request))
62 sys.exit(0)
63
64 def show_as_wiki_page(pagename, request):
65 page = Page(pagename)
66 page.set_raw_body(get_parsed(request))
67 page.send_page(request)
68
69 def append_to_page(pagename, request):
70 page = PageEditor(pagename, request)
71 page.set_raw_body(page.get_raw_body() + get_parsed(request))
72 page.sendEditor()
73
74 def error_msg(pagename, request, msg):
75 Page(pagename).send_page(request, msg=msg)
76
77
78 def execute(pagename, request):
79 """ Main dispatcher for the 'ImportHtml' action.
80 """
81 _ = request.getText
82
83 msg = None
84 if not request.form.has_key('do'):
85 show_form(pagename, request)
86 elif request.form["do"].value == "markup":
87 show_markup(pagename, request)
88 elif request.form["do"].value == "wiki":
89 show_as_wiki_page(pagename, request)
90 elif request.form["do"].value == "import":
91 append_to_page(pagename, request)
92 else:
93 msg = _('<b>Unsupported action: %s</b>') % (request.form['do'].value,)
94
95 if msg:
96 error_msg(pagename, request, msg)
Attached Files
To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.You are not allowed to attach a file to this page.