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

74 lines
3.0 KiB
Python

from datetime import datetime
from flask import Blueprint, render_template, request, redirect, url_for, flash, session
from database import central_query
from blueprints.auth import login_required
from rechten import recht_vereist
bugreport_bp = Blueprint('bugreport', __name__)
@bugreport_bp.route('/', methods=['GET'])
@login_required
def bugreport():
"""Toont het bugreport formulier."""
if 'security_group' not in session:
flash('Je moet eerst inloggen om een bug te rapporteren.', 'error')
return redirect(url_for('auth.login'))
return render_template('bugreport.html')
@bugreport_bp.route('/submit', methods=['POST'])
@login_required
def bugreport_submit():
"""Verwerkt het ingezonden bugreport en slaat het op in de database."""
# Gegevens ophalen uit het HTML formulier
tijdstip_str = request.form.get('tijdstip')
omschrijving = request.form.get('omschrijving')
foutcode = request.form.get('foutcode') # Kan leeg zijn (None of lege string)
# Automatische gegevens
gebruiker_id = session["user"] # Of session.get('email'), afhankelijk van je login-systeem
status = 'Nieuw'
# Validatie (html5 required is een back-up, server-side validatie is veiliger)
if not tijdstip_str or not omschrijving:
flash('Tijdstip en omschrijving zijn verplichte velden!', 'error')
return redirect(url_for('bugreport.bugreport_page'))
try:
# Converteren van datetime-local string (YYYY-MM-DDTHH:MM) naar MySQL formaat
tijdstip = datetime.strptime(tijdstip_str, '%Y-%m-%dT%H:%M')
except ValueError:
flash('Ongeldig datum- of tijdformaat ontvangen.', 'error')
return redirect(url_for('bugreport.bugreport_page'))
# SQL query om de bug op te slaan
# Pas de tabelnaam ('bugs') en kolomnamen aan naar jouw exacte database-schema
# Centrale database: Bugs (Bugstatus_ID 1 = Nieuw)
from tenancy import huidige_school
school = huidige_school(verplicht=False)
query = """
INSERT INTO Bugs (Timestamp, Omschrijving, Foutcode, Bugstatus_ID, Gebruiker_ID, Gebruikersnaam, School_ID)
VALUES (%s, %s, %s, 1, %s, %s, %s)
"""
params = (tijdstip, omschrijving, foutcode or None, session.get('gebruiker_id'), gebruiker_id,
school.id if school else None)
try:
# Voer de query uit met commit=True om de data op te slaan
central_query(query, params, commit=True)
# Succesmelding sturen en doorverwijzen naar het dashboard
flash('Je bugreport is succesvol ingediend! Bedankt voor je feedback.', 'success')
return redirect(url_for('main.dashboard'))
except Exception as e:
# Log de fout eventueel in de console voor debugging
print(f"Database error tijdens bugreport: {e}")
# Foutmelding tonen aan de gebruiker
flash('Er ging iets mis bij het opslaan in de database. Probeer het later opnieuw.', 'error')
return redirect(url_for('bugreport.bugreport_page'))