def view_page(name): """Show a specific wiki page.""" link = name name = Wiki.url_to_name(name) g.info["link"] = link g.info["title"] = name # Look up the page. page = Wiki.get_page(name) if not page: # Page doesn't exist... yet! g.info["title"] = Wiki.url_to_name(name) return template("wiki/missing.html"), 404 # Which revision to show? version = request.args.get("revision", None) if version: # Find this one. rev = None for item in page["revisions"]: if item["id"] == version: rev = item break if rev is None: flash("That revision was not found for this page.") rev = page["revisions"][0] else: # Show the latest one. rev = page["revisions"][0] # Getting the plain text source? if request.args.get("source", None): g.info["markdown"] = render_markdown("\n".join([ "# Source: {}".format(name), "", "```markdown", rev["body"], "```" ])) return template("markdown.inc.html") # Render it! g.info["rendered_body"] = Wiki.render_page(rev["body"]) g.info["rendered_body"] = Emoticons.render(g.info["rendered_body"]) g.info["pretty_time"] = pretty_time(Config.wiki.time_format, rev["time"]) # Author info g.info["author"] = User.get_user(uid=rev["author"]) return template("wiki/page.html")
def view_page(name): """Show a specific wiki page.""" link = name name = Wiki.url_to_name(name) g.info["link"] = link g.info["title"] = name # Look up the page. page = Wiki.get_page(name) if not page: # Page doesn't exist... yet! g.info["title"] = Wiki.url_to_name(name) return template("wiki/missing.html"), 404 # Which revision to show? version = request.args.get("revision", None) if version: # Find this one. rev = None for item in page["revisions"]: if item["id"] == version: rev = item break if rev is None: flash("That revision was not found for this page.") rev = page["revisions"][0] else: # Show the latest one. rev = page["revisions"][0] # Getting the plain text source? if request.args.get("source", None): g.info["markdown"] = render_markdown( "\n".join(["# Source: {}".format(name), "", "```markdown", rev["body"], "```"]) ) return template("markdown.inc.html") # Render it! g.info["rendered_body"] = Wiki.render_page(rev["body"]) g.info["rendered_body"] = Emoticons.render(g.info["rendered_body"]) g.info["pretty_time"] = pretty_time(Config.wiki.time_format, rev["time"]) # Author info g.info["author"] = User.get_user(uid=rev["author"]) return template("wiki/page.html")
def history(name): """Page history.""" name = Wiki.url_to_name(name) # Look up the page. page = Wiki.get_page(name) if not page: flash("Wiki page not found.") return redirect(url_for(".index")) authors = dict() history = list() for rev in page["revisions"]: uid = rev["author"] if not uid in authors: authors[uid] = User.get_user(uid=uid) history.append( dict( id=rev["id"], author=authors[uid], note=rev["note"], pretty_time=pretty_time(Config.wiki.time_format, rev["time"]), ) ) g.info["link"] = Wiki.name_to_url(name) g.info["title"] = name g.info["history"] = history return template("wiki/history.html")
def history(name): """Page history.""" name = Wiki.url_to_name(name) # Look up the page. page = Wiki.get_page(name) if not page: flash("Wiki page not found.") return redirect(url_for(".index")) authors = dict() history = list() for rev in page["revisions"]: uid = rev["author"] if not uid in authors: authors[uid] = User.get_user(uid=uid) history.append( dict( id=rev["id"], author=authors[uid], note=rev["note"], pretty_time=pretty_time(Config.wiki.time_format, rev["time"]), )) g.info["link"] = Wiki.name_to_url(name) g.info["title"] = name g.info["history"] = history return template("wiki/history.html")
def delete_page(name): """Delete a wiki page entirely.""" link = name name = Wiki.url_to_name(name) if request.method == "POST": Wiki.delete_page(name) flash("Page completely deleted.") return redirect(url_for("wiki.index")) g.info["confirm_url"] = url_for("wiki.delete_page", name=link) g.info["title"] = name g.info["type"] = "page" return template("wiki/delete.html")
def delete_revision(name, revision): """Delete a wiki page revision from history.""" link = name name = Wiki.url_to_name(name) if request.method == "POST": Wiki.delete_history(name, revision) flash("Revision deleted.") return redirect(url_for("wiki.view_page", name=Wiki.name_to_url(name))) g.info["confirm_url"] = url_for("wiki.delete_revision", name=link, revision=revision) g.info["title"] = name g.info["type"] = "revision" return template("wiki/delete.html")