from flask import Flask, render_template, request, redirect, url_for, make_response, Markup from enum import Enum from bs4 import BeautifulSoup app = Flask('ui', static_url_path="/static") app.config['TEMPLATES_AUTO_RELOAD'] = True class Status(Enum): ERREUR_LIEN = "Le lien doit ĂȘtre en http ou https !", BON = "Lien ajoutĂ© !" def ecritureFichierHtml(nouvLien, cheminFichier): with open(cheminFichier, 'r') as file: soup = BeautifulSoup(file, 'html.parser') soup.find("hr").insert_after("", nouvLien) with open(cheminFichier, 'w') as file: file.write(soup.prettify()) @app.route('/') def slash(): response = make_response(render_template("index.html")) response.headers["Content-Security-Policy"] = "default-src 'self'" return response @app.route("/ajout") def ajout(): return render_template("ajout.html") @app.route("/apropos") def apropos(): return render_template("apropos.html") @app.route("/bizutage", methods=["POST"]) def bizutage(): if request.method == "POST": lien = request.values['lien'] if not (lien.startswith("http") or lien.startswith("https")): return render_template("ajout.html", erreur=Status.ERREUR_LIEN.value) titre = Markup.escape(request.values['titre']) desc = Markup.escape(request.values['desc']) nouvLien = "

{}

Lien


{}

".format(titre, lien, desc) nouvLienHtml = BeautifulSoup(nouvLien, "html.parser") nouvLienHtmlJinja = BeautifulSoup("{% raw %}" + nouvLien + "{% endraw %}", "html.parser") ecritureFichierHtml(nouvLienHtmlJinja, "templates/index.html") ecritureFichierHtml(nouvLienHtml, "lite/index.html") else: print("error") return render_template("ajout.html", reussi=Status.BON.value) if __name__ == "__main__": app.run()