diff --git a/Dockerfile b/Dockerfile index 97781f1..1f8e8f9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,7 +17,6 @@ RUN git clone https://git.stefan.works/stefan/website.git . RUN poetry install --only main # --no-root RUN poetry run python -m scripts.patch_flask_frozen - RUN poetry run python freezer.py # ---------------------------- diff --git a/docker-nginx.conf b/docker-nginx.conf deleted file mode 100644 index dea446f..0000000 --- a/docker-nginx.conf +++ /dev/null @@ -1,25 +0,0 @@ -worker_processes 1; - -events { - worker_connections 1024; -} - -http { - include /etc/nginx/mime.types; - default_type application/octet-stream; - - sendfile on; - keepalive_timeout 65; - - server { - listen 80; - server_name _; - - root /usr/share/nginx/html; - index index.html; - - location / { - try_files $uri $uri/ =404; - } - } -} diff --git a/freezer.py b/freezer.py index 69942c9..7e3f739 100755 --- a/freezer.py +++ b/freezer.py @@ -1,21 +1,4 @@ from start_site import app - -# Runtime patch for Flask >= 2.3 - -import flask_frozen - -if not hasattr(flask_frozen.Freezer, "_original_generate_all_urls"): - flask_frozen.Freezer._original_generate_all_urls = flask_frozen.Freezer._generate_all_urls - - def _patched_generate_all_urls(self): - if not hasattr(self.app.url_map, "charset"): - setattr(self.app.url_map, "charset", "utf-8") - - return self._original_generate_all_urls() - - flask_frozen.Freezer._generate_all_urls = _patched_generate_all_urls - - from flask_frozen import Freezer # from start_site import app diff --git a/pyproject.toml b/pyproject.toml index 08ee23d..6530c58 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,9 +1,6 @@ [tool.poetry] name = "website" version = "0.1.0" -packages = [ - { include = "start_site" } -] description = "Stefan's Blog" authors = ["stefan "] readme = "README.md" diff --git a/start_site.bkp b/start_site.py similarity index 100% rename from start_site.bkp rename to start_site.py diff --git a/start_site/__init__.py b/start_site/__init__.py deleted file mode 100644 index a10971c..0000000 --- a/start_site/__init__.py +++ /dev/null @@ -1,189 +0,0 @@ -#!/usr/bin/env python - -import os -import toml -from datetime import datetime -import pytz -from flask import Flask, url_for, render_template, send_from_directory -from flask import make_response -from feedgen.feed import FeedGenerator -from flaskext.markdown import Markdown -import markdown -import markdown.extensions.fenced_code -import markdown.extensions.codehilite -import markdown.extensions.toc -from markdown.extensions.toc import TocExtension -from pygments.formatters import HtmlFormatter - -app = Flask(__name__) -Markdown(app) - -meta_data = { - root[len("./blog/") :]: datetime.strptime( - open(os.path.join(root, "index.md"), encoding="UTF-8").readline().rstrip(), - "%Y-%m-%d", - ) - - for root, dirs, files in os.walk("./blog") - - if "index.md" in files -} - - -app.config["blog"] = toml.load("settings.toml") -content_path = app.config["blog"]["content"]["path"] -highlight_style = app.config["blog"]["content"]["style"] -STYLESHEET = "stylesheet.css" -STYLESHEET_AUTO_COMPLETE = "auto-complete.css" -project_name = app.config["blog"]["project"]["name"] -project_title = app.config["blog"]["project"]["title"] - -app.config["blog"]["style"] = toml.load("style.toml") -colors = app.config["blog"]["style"][highlight_style] - - -@app.route("/") -def index(_paths=meta_data): - """Main Site.""" - sorted_meta_data = dict( - sorted(meta_data.items(), reverse=True, key=lambda item: item[1]) - ) - - return render_template("index.html", colors=colors, _paths=sorted_meta_data) - - -@app.route("/blog//index.html") -def blog(blog_item, _date=meta_data): - """Blog Pages.""" - md_file_path = os.path.join(f"blog/{blog_item}/index.md") - with open(md_file_path, "r") as _f: - md_file = _f.read() - md_extensions = [ - "toc", - TocExtension(toc_class="", title=""), - "fenced_code", - "codehilite", - "tables", - "mdx_math", - ] - - md_configs = {"mdx_math": {"enable_dollar_delimiter": True}} - md = markdown.Markdown(extensions=md_extensions, extension_configs=md_configs) - - html = md.convert(md_file) - - formatter = HtmlFormatter(style=highlight_style, full=True, cssclass="codehilite") - css_string = formatter.get_style_defs() - md_css_string = "" - md_template = md_css_string + html - res = render_template( - "blog.html", - # toc=md.toc, - md_doc=md_template, - colors=colors, - stylesheet=STYLESHEET, - # stylesheet_auto_complete=STYLESHEET_AUTO_COMPLETE, - project_name=project_name, - project_title=project_title, - # tree=cut_path_tree( - # #rem_readme(content_path, make_tree(content_path)), - # make_tree(content_path), - # content_path, - # ".md" # ) - _date=meta_data[blog_item], - ) - response = make_response(res) - response.headers["Content-Type"] = "text/html; charset=utf-8" - - return response - - # return render_template( - # f"blog/{blog_item}/index.html", - # _date=meta_data[blog_item] - # ) - - -@app.route("/about.html") -def about(): - """About Page.""" - - return render_template("about.html", colors=colors) - - -@app.route("/contact.html") -def contact(): - """Contact Page.""" - - return render_template("contact.html", colors=colors) - - -@app.route("/rss.xml") -def rss(_items=meta_data): - """RSS Feed. - Generates RSS feed as XML - """ - # rss_feed = [] - _tz = pytz.timezone("Europe/Berlin") - _fg = FeedGenerator() - _fg.title("Website of Stefan Friese") - _fg.description("test") - _fg.language("en-us") - # _fg.author({'name': "Stefan Friese", 'email': 'stefan@stefan.works'}) - _fg.link(href="https://stefan.works", rel="self") - - for key in meta_data.keys(): - _fe = _fg.add_entry() - _fe.id(f"https://stefan.works/blog/{key}/index.html") - _fe.title(key) - # _fe.description("test") - # _fe.author({'name': "Stefan Friese", 'email': 'stefan@stefan.works'}) - _fe.link(href=f"https://stefan.works/blog/{key}/index.html") - _fe.pubDate(pubDate=_tz.localize(meta_data[key])) - _fg.rss_str(pretty=True) - _fg.rss_file("./static/rss.xml") - - return send_from_directory(os.path.join(app.root_path, "static"), "rss.xml") - - -@app.route("/favicon.ico") -def favicon(): - """Provides favicon.""" - - return send_from_directory(os.path.join(app.root_path, "static"), "favicon.ico") - - -@app.errorhandler(404) -def page_not_found(_error): - """Error Handling. - Error 404 - """ - - return render_template("/status_code/404.html", colors=colors), 404 - - -@app.errorhandler(400) -def bad_request(_error): - """Error Handling. - Error 400 - """ - - return render_template("/status_code/400.html", colors=colors), 400 - - -@app.errorhandler(500) -def internal_server_error(_error): - """Error Handling. - Error 500 - """ - - return render_template("/status_code/500.html", colors=colors), 500 - - -with app.test_request_context(): - print(url_for("index")) - # print(url_for("about")) - # print(url_for("contact")) - # print(url_for("rss")) - # print(url_for("static", filename="stylesheet.css")) - # print(meta_data) - # print(url_for("blog", blog_item="first_blog"))