|
|
|
import os
|
|
|
|
from pathlib import Path
|
|
|
|
|
|
|
|
import petname
|
|
|
|
from flask import Flask, redirect, render_template, request, 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 HiddenField, 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")],
|
|
|
|
)
|
|
|
|
title = RadioField(
|
|
|
|
"title", choices=[("side a", "side a"), ("side b", "side b")], default="side a"
|
|
|
|
)
|
|
|
|
author = RadioField(
|
|
|
|
"author", choices=[("side a", "side a"), ("side b", "side b")], default="side a"
|
|
|
|
)
|
|
|
|
comments = RadioField(
|
|
|
|
"comments",
|
|
|
|
choices=[("side a", "side a"), ("side b", "side b")],
|
|
|
|
default="side a",
|
|
|
|
)
|
|
|
|
timestamp = RadioField(
|
|
|
|
"timestamp",
|
|
|
|
choices=[("side a", "side a"), ("side b", "side b")],
|
|
|
|
default="side a",
|
|
|
|
)
|
|
|
|
tags = RadioField(
|
|
|
|
"tags", choices=[("side a", "side a"), ("side b", "side b")], default="side b"
|
|
|
|
)
|
|
|
|
petname = HiddenField("petname")
|
|
|
|
|
|
|
|
|
|
|
|
@app.route("/")
|
|
|
|
def home():
|
|
|
|
upload_form = UploadForm()
|
|
|
|
pname = petname.generate()
|
|
|
|
pname_msg = "You are now {}".format(pname)
|
|
|
|
return render_template(
|
|
|
|
"index.html",
|
|
|
|
upload_form=upload_form,
|
|
|
|
petname=pname,
|
|
|
|
petname_message=pname_msg,
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
@app.route("/upload", methods=["POST"])
|
|
|
|
def upload():
|
|
|
|
upload_form = UploadForm()
|
|
|
|
|
|
|
|
if upload_form.validate_on_submit():
|
|
|
|
pname = upload_form.petname.data
|
|
|
|
pname_msg = "You are still {}".format(pname)
|
|
|
|
|
|
|
|
metadata_name = "metadata-{}.db".format(pname)
|
|
|
|
if upload_form.metadata.data:
|
|
|
|
f = upload_form.metadata.data
|
|
|
|
f.save(os.path.join(CWD, "metadatum", metadata_name))
|
|
|
|
|
|
|
|
pdf_name = "index-{}.pdf".format(pname)
|
|
|
|
pdf_path = os.path.join(CWD, "static", "generated", pdf_name)
|
|
|
|
metadata_conn = "sqlite:///{}".format(
|
|
|
|
os.path.join(CWD, "metadatum", metadata_name)
|
|
|
|
)
|
|
|
|
|
|
|
|
make_cards(
|
|
|
|
pdf_path,
|
|
|
|
metadata_conn,
|
|
|
|
["title", "timestamp", "comments", "authors"],
|
|
|
|
["tags"],
|
|
|
|
)
|
|
|
|
|
|
|
|
gen_msg = (
|
|
|
|
"Currently working on {}, click 'generate' to re-generate the same PDF"
|
|
|
|
).format(pdf_name)
|
|
|
|
pdf_url = url_for("static", filename="generated/{}".format(pdf_name))
|
|
|
|
|
|
|
|
return render_template(
|
|
|
|
"index.html",
|
|
|
|
upload_form=upload_form,
|
|
|
|
pdf=pdf_url,
|
|
|
|
petname=pname,
|
|
|
|
petname_message=pname_msg,
|
|
|
|
generation_message=gen_msg,
|
|
|
|
)
|
|
|
|
|
|
|
|
pname = petname.generate()
|
|
|
|
pname_msg = "You have become {}".format(pname)
|
|
|
|
return render_template(
|
|
|
|
"index.html", upload_form=upload_form, petname_message=pname_msg, petname=pname
|
|
|
|
)
|