74 lines
3.0 KiB
Python
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')) |