""" MoinMoin - ImportHtml action """ import mimetypes, string, sys, time, HTMLParser from MoinMoin import config, user, util, wikiutil, webapi from MoinMoin.Page import Page from MoinMoin.PageEditor import PageEditor from MoinMoin.HTML2MoinMoin import HTML2MoinMoin import urllib, cStringIO ############################################################################# ### Create parts of the Web interface ############################################################################# def show_form(pagename, request): webapi.http_headers(request) request.write( """
Show markup
Show as wiki page
Append to page
URL:
""" % { 'baseurl': webapi.getBaseURL(), 'pagename': wikiutil.quoteWikiname(pagename), }) wikiutil.send_footer(request, pagename, showpage=1) def get_content(request): if request.form.has_key("url"): try: return urllib.urlopen(request.form["url"].value).read() except IOError: return "" else: return "" def get_parsed(request): p = HTML2MoinMoin() p.output = cStringIO.StringIO() try: p.feed(get_content(request)) p.close() except: import traceback traceback.print_exc(None, p.output) return p.output.getvalue() def show_markup(pagename, request): webapi.http_headers(request, ["Content-type: text/plain"]) request.write(get_parsed(request)) sys.exit(0) def show_as_wiki_page(pagename, request): page = Page(pagename) page.set_raw_body(get_parsed(request)) page.send_page(request) def append_to_page(pagename, request): page = PageEditor(pagename, request) page.set_raw_body(page.get_raw_body() + get_parsed(request)) page.sendEditor() def error_msg(pagename, request, msg): Page(pagename).send_page(request, msg=msg) def execute(pagename, request): """ Main dispatcher for the 'ImportHtml' action. """ _ = request.getText msg = None if not request.form.has_key('do'): show_form(pagename, request) elif request.form["do"].value == "markup": show_markup(pagename, request) elif request.form["do"].value == "wiki": show_as_wiki_page(pagename, request) elif request.form["do"].value == "import": append_to_page(pagename, request) else: msg = _('Unsupported action: %s') % (request.form['do'].value,) if msg: error_msg(pagename, request, msg)