Initial commit

This commit is contained in:
Kristof committed 2026-10-14 12:29:29 +02:00
commit 536ff43ce4
158 files changed
+30355

No files matched your search

+124
View File
@@ -0,0 +1,124 @@
"""Google › Verzendlijsten: Google Groepen van de school bekijken, aanmaken en aanpassen (leden en rollen)."""
from flask import Blueprint, render_template, request, flash, redirect, url_for, session
from blueprints.auth import login_required
from rechten import recht_vereist, log
from services.verzendlijsten_service import (VerzendlijstenService, VerzendlijstFout, ROLLEN, WIE_MAILT, adressen)
from tenancy import huidige_school
verzendlijsten_bp = Blueprint('verzendlijsten', __name__)
@verzendlijsten_bp.route("/", methods=["GET"])
@login_required
@recht_vereist('verzendlijsten')
def overzicht():
lijsten, fout = [], None
try:
lijsten = VerzendlijstenService().alle()
except Exception as e:
fout = str(e)
return render_template("verzendlijsten.html", lijsten=lijsten, fout=fout,
domeinen=huidige_school().domeinen, wie_mailt=WIE_MAILT)
@verzendlijsten_bp.route("/nieuw", methods=["POST"])
@login_required
@recht_vereist('verzendlijsten')
def nieuw():
deel = (request.form.get('adres') or '').strip().lower()
domein = (request.form.get('domein') or '').strip().lower()
email = deel if '@' in deel else f"{deel}@{domein}"
svc = VerzendlijstenService()
try:
svc.aanmaken(email, request.form.get('naam'), request.form.get('beschrijving'))
except VerzendlijstFout as e:
flash(str(e), "error")
return redirect(url_for('verzendlijsten.overzicht'))
log(f"Verzendlijst aangemaakt: {email}")
melding = f"Verzendlijst {email} aangemaakt."
wie = request.form.get('wie_mailt')
if wie:
try:
svc.zet_wie_mailt(email, wie)
except VerzendlijstFout as e:
melding += f" 'Wie mag mailen' kon niet ingesteld worden: {e}"
flash(melding + " Google kan er een minuutje over doen voor ze overal zichtbaar is.", "success")
return redirect(url_for('verzendlijsten.detail', email=email))
@verzendlijsten_bp.route("/<email>", methods=["GET"])
@login_required
@recht_vereist('verzendlijsten')
def detail(email):
svc = VerzendlijstenService()
try:
groep = svc.groep(email)
leden = svc.leden(email)
except VerzendlijstFout as e:
flash(str(e), "error")
return redirect(url_for('verzendlijsten.overzicht'))
return render_template("verzendlijst.html", groep=groep, leden=leden, rollen=ROLLEN,
wie_mailt=WIE_MAILT, huidig_wie=svc.wie_mailt(email))
@verzendlijsten_bp.route("/<email>/bewerken", methods=["POST"])
@login_required
@recht_vereist('verzendlijsten')
def bewerken(email):
svc = VerzendlijstenService()
try:
svc.bijwerken(email, request.form.get('naam'), request.form.get('beschrijving'))
if request.form.get('wie_mailt'):
svc.zet_wie_mailt(email, request.form.get('wie_mailt'))
log(f"Verzendlijst aangepast: {email}")
flash("Verzendlijst bijgewerkt.", "success")
except VerzendlijstFout as e:
flash(str(e), "error")
return redirect(url_for('verzendlijsten.detail', email=email))
@verzendlijsten_bp.route("/<email>/leden/toevoegen", methods=["POST"])
@login_required
@recht_vereist('verzendlijsten')
def leden_toevoegen(email):
goed, ongeldig = adressen(request.form.get('adressen'))
if ongeldig:
flash("Geen geldig e-mailadres, overgeslagen: " + ", ".join(ongeldig), "warning")
if goed:
gelukt, fouten = VerzendlijstenService().leden_toevoegen(email, goed, request.form.get('rol') or 'MEMBER')
if gelukt:
log(f"Verzendlijst {email}: {gelukt} lid/leden toegevoegd")
flash(f"{gelukt} lid/leden toegevoegd.", "success")
for adres, fout in fouten:
flash(f"{adres}: {fout}", "error")
elif not ongeldig:
flash("Vul minstens één e-mailadres in.", "error")
return redirect(url_for('verzendlijsten.detail', email=email))
@verzendlijsten_bp.route("/<email>/leden/rol", methods=["POST"])
@login_required
@recht_vereist('verzendlijsten')
def lid_rol(email):
lid = request.form.get('lid') or ''
try:
VerzendlijstenService().lid_rol(email, lid, request.form.get('rol'))
flash(f"Rol van {lid} aangepast.", "success")
except VerzendlijstFout as e:
flash(str(e), "error")
return redirect(url_for('verzendlijsten.detail', email=email))
@verzendlijsten_bp.route("/<email>/leden/verwijderen", methods=["POST"])
@login_required
@recht_vereist('verzendlijsten')
def lid_verwijderen(email):
lid = request.form.get('lid') or ''
try:
VerzendlijstenService().lid_verwijderen(email, lid)
log(f"Verzendlijst {email}: {lid} verwijderd")
flash(f"{lid} uit de verzendlijst gehaald.", "success")
except VerzendlijstFout as e:
flash(str(e), "error")
return redirect(url_for('verzendlijsten.detail', email=email))