67 lines
2.3 KiB
Python
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'))
|