import os from pathlib import Path from flask import Flask, redirect, render_template, url_for from flask_wtf import FlaskForm from flask_wtf.csrf import CSRFProtect from flask_wtf.file import FileAllowed, FileField, FileRequired from werkzeug.utils import secure_filename from wtforms import RadioField, StringField from wtforms.validators import DataRequired app = Flask(__name__) app.config["SECRET_KEY"] = "foo" app.config["WTF_CSRF_SECRET_KEY"] = "bar" CWD = Path().resolve() class UploadForm(FlaskForm): metadata = FileField( validators=[FileAllowed(["db"], "Metadata databases only"), FileRequired()] ) title = RadioField("title", choices=[("side a", "side a"), ("side b", "side b")]) @app.route("/") def home(): upload_form = UploadForm() return render_template("index.html", upload_form=upload_form) @app.route("/upload", methods=["POST"]) def upload(): upload_form = UploadForm() if upload_form.validate_on_submit(): f = upload_form.metadata.data filename = secure_filename(f.filename) f.save(os.path.join(CWD, "metadatum", filename)) return redirect(url_for("home")) return render_template("index.html", upload_form=upload_form) @app.route("/generate", methods=["POST"]) def generate(): upload_form = UploadForm() if upload_form.validate_on_submit(): print(upload_form.title.data) else: print("didnt work") return render_template("index.html", upload_form=upload_form)