from flask import Blueprint, abort, redirect, render_template, request, url_for from ...services import mock_mail bp = Blueprint("shared", __name__, template_folder="../../templates") # ── Пользовательский просмотр общего ящика ───────────────────────────────── @bp.route("/") def view(sid: int): sm = mock_mail.get_shared(sid) if not sm or mock_mail.CURRENT_USER_EMAIL not in sm.user_emails: abort(404) return render_template("shared/view.html", sm=sm) # ── Админка: CRUD общих ящиков ───────────────────────────────────────────── @bp.route("/admin/") def admin_index(): return render_template("shared/admin_index.html", shared=mock_mail.list_shared()) @bp.route("/admin/new", methods=["GET", "POST"]) def admin_new(): if request.method == "POST": mock_mail.add_shared( name=request.form.get("name", ""), email=request.form.get("email", ""), user_emails=request.form.get("users", "").splitlines(), ) return redirect(url_for("shared.admin_index")) return render_template("shared/admin_edit.html", sm=None) @bp.route("/admin//edit", methods=["GET", "POST"]) def admin_edit(sid: int): sm = mock_mail.get_shared(sid) if not sm: abort(404) if request.method == "POST": mock_mail.update_shared( sid, name=request.form.get("name", ""), email=request.form.get("email", ""), user_emails=request.form.get("users", "").splitlines(), ) return redirect(url_for("shared.admin_index")) return render_template("shared/admin_edit.html", sm=sm) @bp.route("/admin//delete", methods=["POST"]) def admin_delete(sid: int): mock_mail.delete_shared(sid) return redirect(url_for("shared.admin_index"))