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))