76 lines
2.1 KiB
Python
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))
|