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("div", {'id': 'liens'}).append(nouvLien) file.seek(0) 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=["GET"]) def bizutage_redirect(): return redirect('/') @app.route("/bizutage", methods=["POST"]) def bizutage(): if request.method == "POST": lien = request.values['lien'].lower() 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 = f"""

{titre}

Lien


{desc}

""" nouvLienHtml = BeautifulSoup(nouvLien, "html.parser") \ .find("div", {"class": "elem"}) ecritureFichierHtml(nouvLienHtml, "templates/index.html") else: print("error") return render_template("ajout.html", reussi=Status.BON.value) if __name__ == "__main__": app.run(debug=True)