Initial commit
This commit is contained in:
commit
536ff43ce4
158 files changed
+30355
No files matched your search
@@ -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))
|
||||
Reference in new issue
Block a user