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

+116
View File
@@ -0,0 +1,116 @@
"""Google › Gedeelde drives: overzicht, leden en rechten beheren."""
import time
from flask import Blueprint, render_template, request, redirect, url_for, flash
from blueprints.auth import login_required
from rechten import recht_vereist, log
from services import gedeelde_drives_service as gd
gedeelde_drives_bp = Blueprint('gedeelde_drives', __name__)
@gedeelde_drives_bp.route('/', methods=['GET'])
@login_required
@recht_vereist('gedeelde_drives')
def overzicht():
drives, fout, opgehaald, gekozen, leden = [], None, None, None, []
did = request.args.get('drive') or ''
vervang, lid, lid_van = None, (request.args.get('lid') or '').strip().lower(), None
try:
if lid:
lid_van = gd.drives_van(lid)
elif request.args.get('oud'):
oud, nieuw = request.args.get('oud').strip().lower(), (request.args.get('nieuw') or '').strip().lower()
vervang = {'oud': oud, 'nieuw': nieuw, 'drives': gd.drives_van(oud)}
elif did:
gekozen, leden = gd.drive(did)
else:
drives, t = gd.overzicht(vernieuw=bool(request.args.get('vernieuw')))
opgehaald = time.strftime('%d-%m-%Y %H:%M', time.localtime(t))
if request.args.get('vernieuw'):
return redirect(url_for('gedeelde_drives.overzicht'))
except gd.DriveFout as e:
fout = str(e)
except Exception as e:
fout = gd.vriendelijk(e)
return render_template('gedeelde_drives.html', drives=drives, fout=fout, opgehaald=opgehaald, gekozen=gekozen,
leden=leden, rollen=gd.ROLLEN, vervang=vervang, resultaat=None, lid=lid, lid_van=lid_van)
@gedeelde_drives_bp.route('/vervangen', methods=['POST'])
@login_required
@recht_vereist('gedeelde_drives')
def vervangen():
oud, nieuw = request.form.get('oud'), request.form.get('nieuw')
try:
res = gd.vervang(oud, nieuw, request.form.getlist('drive'), request.form.get('verwijderen') == '1',
request.form.get('melding') == '1')
except gd.DriveFout as e:
flash(str(e), "error")
return redirect(url_for('gedeelde_drives.overzicht', oud=oud, nieuw=nieuw))
ok = sum(1 for r in res if r['ok'])
log(f"Gedeelde drives: {oud} vervangen door {nieuw} op {ok} drive(s)")
return render_template('gedeelde_drives.html', drives=[], fout=None, opgehaald=None, gekozen=None, leden=[],
rollen=gd.ROLLEN, vervang={'oud': oud, 'nieuw': nieuw, 'drives': []}, resultaat=res,
lid='', lid_van=None)
def _terug():
return redirect(url_for('gedeelde_drives.overzicht', drive=request.form.get('drive')))
@gedeelde_drives_bp.route('/lid/toevoegen', methods=['POST'])
@login_required
@recht_vereist('gedeelde_drives')
def lid_toevoegen():
did, email, rol = request.form.get('drive'), request.form.get('email'), request.form.get('rol')
try:
gd.lid_toevoegen(did, email, rol, request.form.get('melding') == '1')
log(f"Gedeelde drive {request.form.get('naam')}: {email} toegevoegd als {gd.ROL_NAAM.get(rol)}")
flash(f"{email} toegevoegd als {gd.ROL_NAAM.get(rol)}.", "success")
except gd.DriveFout as e:
flash(str(e), "error")
return _terug()
@gedeelde_drives_bp.route('/lid/wijzigen', methods=['POST'])
@login_required
@recht_vereist('gedeelde_drives')
def lid_wijzigen():
rol = request.form.get('rol')
try:
gd.lid_wijzigen(request.form.get('drive'), request.form.get('perm'), rol)
log(f"Gedeelde drive {request.form.get('naam')}: {request.form.get('email')} → {gd.ROL_NAAM.get(rol)}")
flash(f"{request.form.get('email')} is nu {gd.ROL_NAAM.get(rol)}.", "success")
except gd.DriveFout as e:
flash(str(e), "error")
return _terug()
@gedeelde_drives_bp.route('/lid/verwijderen', methods=['POST'])
@login_required
@recht_vereist('gedeelde_drives')
def lid_verwijderen():
try:
gd.lid_verwijderen(request.form.get('drive'), request.form.get('perm'))
log(f"Gedeelde drive {request.form.get('naam')}: {request.form.get('email')} verwijderd")
flash(f"{request.form.get('email')} verwijderd uit de drive.", "success")
except gd.DriveFout as e:
flash(str(e), "error")
return _terug()
@gedeelde_drives_bp.route('/nieuw', methods=['POST'])
@login_required
@recht_vereist('gedeelde_drives')
def nieuw():
naam = request.form.get('naam')
try:
did = gd.drive_maken(naam, (request.form.get('beheerder') or '').strip() or None)
log(f"Gedeelde drive {naam} aangemaakt")
flash(f"Gedeelde drive '{naam}' aangemaakt.", "success")
return redirect(url_for('gedeelde_drives.overzicht', drive=did))
except gd.DriveFout as e:
flash(str(e), "error")
return redirect(url_for('gedeelde_drives.overzicht'))