"""Skore-synchronisatie in Smartschool: manueel starten, planning instellen en logboek bekijken.""" from flask import Blueprint, render_template, request, redirect, url_for, flash, session from blueprints.auth import login_required from rechten import recht_vereist import rechten from services import skore_service as skore skore_bp = Blueprint('skore', __name__) @skore_bp.route('/', methods=['GET']) @login_required @recht_vereist('skore') def overzicht(): try: p = skore.planning() log = skore.logboek() except Exception as e: flash(f"Kon de Skore-gegevens niet lezen: {e}", "error") p, log = None, [] try: loopt = skore.bezig() except Exception: loopt = False return render_template('skore.html', planning=p, log=log, frequenties=skore.FREQUENTIES, loopt=loopt, weekdagen=skore.WEEKDAGEN, volgende=skore.volgende_moment(p) if p else None) @skore_bp.route('/start', methods=['POST']) @login_required @recht_vereist('skore') def start(): rij = skore.start(session.get('user'), manier='manueel') rechten.log(actie="Skore-synchronisatie gestart") if rij['Status'] == 'mislukt': flash(rij['Melding'], "error") else: flash("Skore-synchronisatie gestart bij Smartschool. PIVOT volgt de status automatisch op; " "deze pagina ververst vanzelf tot ze klaar is.", "success") return redirect(url_for('skore.overzicht')) @skore_bp.route('/status/', methods=['POST']) @login_required @recht_vereist('skore') def status(log_id): rij = skore.controleer(log_id) if rij: flash(f"Status: {rij['Status']}", "info") return redirect(url_for('skore.overzicht')) @skore_bp.route('/planning', methods=['POST']) @login_required @recht_vereist('skore') def planning(): f = request.form try: skore.bewaar_planning(f.get('frequentie', 'uit'), f.get('uur', 6), f.get('minuut', 0), f.get('weekdag', 0), f.get('dag_van_maand', 1), session.get('user')) rechten.log(actie=f"Skore-planning: {f.get('frequentie')}") flash("Planning opgeslagen.", "success") except (ValueError, TypeError) as e: flash(str(e) or "Ongeldige planning.", "error") return redirect(url_for('skore.overzicht'))