2
0
Fork 0
textout/textoutpc/demo/__init__.py

60 lines
1.6 KiB
Python

#!/usr/bin/env python
# *****************************************************************************
# Copyright (C) 2023 Thomas Touhey <thomas@touhey.fr>
# This file is part of the textoutpc project, which is MIT-licensed.
# *****************************************************************************
"""Demonstration website for textoutpc."""
from __future__ import annotations
from pathlib import Path
from flask import Flask, render_template, request
from flask_assets import (
Bundle as AssetsBundle,
Environment as AssetsEnvironment,
)
from .utils import to_html
__all__ = ["app"]
STATIC_PATH = Path(__file__).parent
DEFAULT_TEXT = open(STATIC_PATH / "content" / "default.bbcode").read().rstrip()
DEFAULT_TRANSLATED_TEXT = to_html(DEFAULT_TEXT)
app = Flask(
__name__,
template_folder=STATIC_PATH / "templates",
static_folder=STATIC_PATH / "static",
)
"""WSGI application for the textoutpc demonstration."""
assets = AssetsEnvironment(app)
assets.register(
"js",
AssetsBundle("js/elements.js"),
filters="jsmin",
output="index.js",
)
assets.register(
"css",
AssetsBundle("css/elements.scss", "css/page.scss"),
filters=("scss", "cssmin"),
output="index.css",
)
@app.route("/", methods=("GET", "POST"))
def index() -> str:
"""Process input for demonstration purposes."""
if request.method == "POST" and "text" in request.form:
text = request.form["text"].strip()
result = to_html(text)
else:
text = DEFAULT_TEXT
result = DEFAULT_TRANSLATED_TEXT
return render_template("page.html", text=text, result=result)