Files
Pivot/blueprints/skore_bp.py
2026-10-14 13:34:37 +02:00

67 lines
2.3 KiB
Python

"""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/<int:log_id>', 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'))