Example #1
0
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")
Example #2
0
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")
Example #3
0
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")
Example #4
0
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")
Example #5
0
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")
Example #6
0
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")
Example #7
0
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")
Example #8
0
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")