mail/app/blueprints/groups/__init__.py
deeily 5024bf9a8d init: full mail stack — phases 0..8 (web client, admin, IMAP/SMTP,
sieve, search, sessions, dramatiq, deploy/install, ELK, monitoring)
2026-04-29 16:30:43 +03:00

42 lines
1.3 KiB
Python

from flask import Blueprint, abort, redirect, render_template, request, url_for
from ...services import mock_mail
bp = Blueprint("groups", __name__, template_folder="../../templates")
@bp.route("/")
def index():
return render_template("groups/index.html", groups=mock_mail.list_groups())
@bp.route("/new", methods=["GET", "POST"])
def create():
if request.method == "POST":
name = request.form.get("name", "").strip()
members = request.form.get("members", "").splitlines()
if not name:
return render_template("groups/edit.html", group=None, error="Введите название")
mock_mail.add_group(name, members)
return redirect(url_for("groups.index"))
return render_template("groups/edit.html", group=None)
@bp.route("/<int:gid>/edit", methods=["GET", "POST"])
def edit(gid: int):
g = mock_mail.get_group(gid)
if not g:
abort(404)
if request.method == "POST":
name = request.form.get("name", "").strip()
members = request.form.get("members", "").splitlines()
mock_mail.update_group(gid, name, members)
return redirect(url_for("groups.index"))
return render_template("groups/edit.html", group=g)
@bp.route("/<int:gid>/delete", methods=["POST"])
def delete(gid: int):
mock_mail.delete_group(gid)
return redirect(url_for("groups.index"))