|
|
|
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 temp_index import make_cards
|
|
|
|
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(
|
|
|
|
"Metadata file",
|
|
|
|
validators=[FileAllowed(["db"], "Metadata databases only"), FileRequired()],
|
|
|
|
)
|
|
|
|
title = RadioField("title", choices=[("side a", "side a"), ("side b", "side b")])
|
|
|
|
author = RadioField("author", choices=[("side a", "side a"), ("side b", "side b")])
|
|
|
|
tags = RadioField("tags", choices=[("side a", "side a"), ("side b", "side b")])
|
|
|
|
comments = RadioField(
|
|
|
|
"comments", choices=[("side a", "side a"), ("side b", "side b")]
|
|
|
|
)
|
|
|
|
timestamp = RadioField(
|
|
|
|
"timestamp", 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)
|
|
|
|
metadata_fpath = os.path.join(CWD, "metadatum", filename)
|
|
|
|
f.save(metadata_fpath)
|
|
|
|
|
|
|
|
# FIXME: fix naming of files
|
|
|
|
|
|
|
|
pdf = os.path.join(CWD, "static", "generated", "{}.pdf".format(filename))
|
|
|
|
metadata = "sqlite:///{}".format(os.path.join(CWD, "metadatum", filename))
|
|
|
|
|
|
|
|
# FIXME: remove hardcoding, feed fields in
|
|
|
|
make_cards(
|
|
|
|
pdf, metadata, ["title", "timestamp", "comments", "authors"], ["tags"]
|
|
|
|
)
|
|
|
|
pdf_url = url_for("static", filename="generated/{}.pdf".format(filename))
|
|
|
|
return render_template("index.html", upload_form=upload_form, pdf=pdf_url)
|
|
|
|
|
|
|
|
return render_template("index.html", upload_form=upload_form)
|