amanuensis/amanuensis/server/home/__init__.py

76 lines
2.1 KiB
Python

from operator import le
from sqlalchemy.sql.expression import true
from amanuensis.db.models import Lexicon
from flask import Blueprint, render_template, g, url_for, redirect
from amanuensis.backend import userq, lexiq, memq
from .forms import LexiconCreateForm
bp = Blueprint("home", __name__, url_prefix="/home", template_folder=".")
@bp.get("/")
def home():
return render_template("home.root.jinja")
@bp.get("/admin/")
# @login_required
# @admin_required
def admin():
return render_template("home.admin.jinja", userq=userq, lexiq=lexiq)
@bp.get("/admin/create/")
def create():
form = LexiconCreateForm()
return render_template("home.create.jinja", form=form)
@bp.post("/admin/create/")
def create_post():
form = LexiconCreateForm()
if form.validate():
name = form.lexicon.data
editor = userq.try_from_username(g.db, form.editor.data)
prompt = form.prompt.data
assert editor is not None
lexicon = lexiq.create(g.db, name, None, prompt)
new_membership = memq.create(g.db, editor.id, lexicon.id, is_editor=True)
lexicon.joinable = False
g.db.session.commit()
return redirect(url_for("home.admin"))
else:
return render_template("home.create.jinja", form=form)
# @bp_home.route("/admin/create/", methods=['GET', 'POST'])
# @login_required
# @admin_required
# def admin_create():
# form = LexiconCreateForm()
# if not form.validate_on_submit():
# # GET or POST with invalid form data
# return render_template('home.create.jinja', form=form)
# # POST with valid data
# root: RootConfigDirectoryContext = current_app.config['root']
# model_factory: ModelFactory = current_app.config['model_factory']
# lexicon_name = form.lexiconName.data
# editor_name = form.editorName.data
# prompt = form.promptText.data
# # Editor's existence was checked by form validators
# editor = model_factory.user(editor_name)
# lexicon = create_lexicon(root, lexicon_name, editor)
# with lexicon.ctx.edit_config() as cfg:
# cfg.prompt = prompt
# return redirect(url_for('session.session', name=lexicon_name))