from flask import render_template, request, redirect, url_for from . import memos_bp from .models import db, Memo, Note, Journal from core.auth import require_perms @memos_bp.get("/") @require_perms("memos.read") def index(): memos = Memo.query.order_by(Memo.created_at.desc()).all() return render_template("memos/index.html", memos=memos) @memos_bp.post("/add") @require_perms("memos.write") def add(): v = (request.form.get("memo") or "").strip() if v: db.session.add(Memo(memo=v)); db.session.commit() return redirect(url_for("memos.index")) @memos_bp.get("/notes") @require_perms("memos.read") def notes(): notes = Note.query.order_by(Note.created_at.desc()).all() return render_template("memos/notes.html", notes=notes) @memos_bp.post("/notes/new") @require_perms("memos.write") def notes_new(): name = (request.form.get("name") or "").strip() text = (request.form.get("note") or "").strip() if name: slug = name.lower().replace(" ","-") db.session.add(Note(name=name, slug=slug, note=text)); db.session.commit() return redirect(url_for("memos.notes")) @memos_bp.get("/notes/") @require_perms("memos.read") def view_note(slug): n = Note.query.filter_by(slug=slug).first_or_404() return render_template("memos/view_note.html", note=n) @memos_bp.get("/journal") @require_perms("memos.read") def journal(): entries = Journal.query.order_by(Journal.created_at.desc()).all() return render_template("memos/journal.html", journal=entries) @memos_bp.post("/journal/new") @require_perms("memos.write") def journal_new(): name = (request.form.get("name") or "").strip() text = (request.form.get("entry") or "").strip() if name: slug = name.lower().replace(" ","-") db.session.add(Journal(name=name, slug=slug, entry=text)); db.session.commit() return redirect(url_for("memos.journal")) @memos_bp.get("/journal/") @require_perms("memos.read") def view_journal(slug): e = Journal.query.filter_by(slug=slug).first_or_404() return render_template("memos/view_journal.html", entry=e)