55 lines
2.0 KiB
Python
55 lines
2.0 KiB
Python
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("/<int:sid>")
|
|
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/<int:sid>/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/<int:sid>/delete", methods=["POST"])
|
|
def admin_delete(sid: int):
|
|
mock_mail.delete_shared(sid)
|
|
return redirect(url_for("shared.admin_index"))
|