from flask import (Flask, abort, make_response, redirect, render_template, request, url_for) from flask_font_awesome import FontAwesome import config import content as con_gen from forms import SearchForm, register_csrf TITLE = config.TITLE STITLE = config.STITLE STYLE = config.STYLE LANGUAGE = config.LANGUAGE DESCRIPTION = config.DESCRIPTION WEBSITE = config.WEBSITE MAIL = config.MAIL app = Flask(__name__) register_csrf(app) font_awesome = FontAwesome(app) @app.errorhandler(404) def page_not_found(e): return render_template("error.html", title=TITLE, stitle=STITLE, errorcode="404", style=STYLE, language=LANGUAGE), 404 @app.route("/index.html") def index_re(): return redirect(url_for("index")) @app.route("/") def index(): content = con_gen.gen_index_string() return render_template("index.html", title=TITLE, stitle=STITLE, content_string=content, style=STYLE, language=LANGUAGE) @app.route("/search.html", methods=["GET", "POST"]) def search_re(): return redirect(url_for("search")) @app.route("/search", methods=["GET", "POST"]) def search(): form = SearchForm() if request.method == "POST": query_str = request.form["query_str"] content = con_gen.gen_query_res_string(query_str) return render_template("search.html", title=TITLE, stitle=STITLE, style=STYLE, form=form, content=content, language=LANGUAGE), 200 return render_template("search.html", title=TITLE, stitle=STITLE, style=STYLE, form=form, content="", language=LANGUAGE), 200 @app.route("/imprint.html") def imprint_re(): return redirect(url_for("imprint")) @app.route("/imprint") def imprint(): return render_template("imprint.html", title=TITLE, stitle=STITLE, mail=MAIL, style=STYLE, language=LANGUAGE) @app.route("/archive.html") def archive_re(): return redirect(url_for("archive")) @app.route("/archive") def archive(): content = con_gen.gen_arch_string() return render_template("archive.html", title=TITLE, stitle=STITLE, content_string=content, style=STYLE, language=LANGUAGE) @app.route("/entry/<path>") def entry(path): content = con_gen.gen_stand_string(path) if content != "": return render_template("standalone.html", title=TITLE, stitle=STITLE, content_string=content, style=STYLE, language=LANGUAGE) abort(404) @app.route("/feed.xml") @app.route("/rss.xml") @app.route("/rss") def feed_re(): return redirect(url_for("feed")) @app.route("/feed") def feed(): content = con_gen.get_rss_string() feed_xml = render_template("feed.xml", content_string=content, title=TITLE, description=DESCRIPTION, website=WEBSITE) response = make_response(feed_xml) response.headers["Content-Type"] = "application/rss+xml" return response if __name__ == "__main__": app.run(host="0.0.0.0")