PIVOT 1.1.0
This commit is contained in:
commit
8a53234eb6
161 files changed
+31109
No files matched your search
@@ -0,0 +1,145 @@
|
||||
from flask import Blueprint, render_template, request, session, redirect, url_for, flash
|
||||
from database import execute_query
|
||||
from blueprints.auth import login_required
|
||||
from rechten import recht_vereist
|
||||
from services import CIP_inleveren # Voor de Ingeven_herstelling logica
|
||||
from services.signpost_byod_service import get_cases_by_serial
|
||||
from services import toestellen as tst
|
||||
|
||||
# Herstellingen met de kolomnamen die herstellingen.html verwacht
|
||||
HERSTELLINGEN_SQL = """
|
||||
SELECT h.Incident_ID AS Incident_nr, t.Schooleigen_ID AS KAMXM_nummer, t.Serienummer,
|
||||
h.Omschrijving AS Soort_herstelling, h.Status_herstelling AS Status, h.Datum, h.Kostprijs,
|
||||
l.Internnummer
|
||||
FROM Signpost_herstellingen_DB h
|
||||
JOIN Toestellen t ON t.Toestel_ID = h.Toestel_ID
|
||||
LEFT JOIN Leerlingen l ON l.Leerling_ID = h.Leerling_ID
|
||||
"""
|
||||
|
||||
# Definieer de blueprint
|
||||
repairs_bp = Blueprint('repairs', __name__)
|
||||
|
||||
#---------------------------------------------------
|
||||
# --- ROUTE: OVERZICHT & ZOEKEN ---
|
||||
#----------------------------------------------------
|
||||
@repairs_bp.route('/herstellingen', methods=['GET', 'POST'])
|
||||
@login_required
|
||||
@recht_vereist('herstellingen')
|
||||
def herstellingen():
|
||||
query = None
|
||||
results = []
|
||||
|
||||
# Haal de zoekterm op bij een POST request
|
||||
if request.method == 'POST':
|
||||
query = request.form.get('query')
|
||||
sql = HERSTELLINGEN_SQL + " WHERE t.Schooleigen_ID LIKE %s OR h.Omschrijving LIKE %s ORDER BY h.Incident_ID DESC"
|
||||
results = execute_query(sql, (f'%{query}%', f'%{query}%'))
|
||||
else:
|
||||
# Toon standaard alle herstellingen
|
||||
results = execute_query(HERSTELLINGEN_SQL + " ORDER BY h.Incident_ID DESC")
|
||||
|
||||
return render_template('herstellingen.html', results=results, query=query)
|
||||
|
||||
#------------------------------------------------
|
||||
# --- ROUTE: TOEVOEGEN HERSTELLING ---
|
||||
#------------------------------------------------
|
||||
@repairs_bp.route('/repairs.add_herstelling', methods=['POST'])
|
||||
@login_required
|
||||
@recht_vereist('herstellingen')
|
||||
def add_herstelling():
|
||||
kamxm_nummer = request.form.get('kamxm_nummer')
|
||||
soort_herstelling = request.form.get('soort_herstelling')
|
||||
|
||||
if not kamxm_nummer or not soort_herstelling:
|
||||
flash("Vul alle velden in!", "error")
|
||||
return redirect(url_for('repairs.herstellingen'))
|
||||
|
||||
try:
|
||||
# Gebruik de logica uit de CIP_inleveren module
|
||||
CIP_inleveren.Ingeven_herstelling(kamxm_nummer, soort_herstelling)
|
||||
if CIP_inleveren.foutmelding:
|
||||
flash(CIP_inleveren.foutmelding)
|
||||
except Exception as e:
|
||||
flash(f"Er is een fout opgetreden: {str(e)}", "error")
|
||||
|
||||
return redirect(url_for('repairs.herstellingen'))
|
||||
|
||||
#functie achter wijzig herstellingen
|
||||
@repairs_bp.route('/wijzig_status_herstelling', methods=['POST'])
|
||||
@login_required
|
||||
@recht_vereist('herstellingen')
|
||||
def wijzig_status_herstelling():
|
||||
# Haal alle gegevens op uit het formulier
|
||||
kamxm_nummer = request.form.get('kamxm_nummer')
|
||||
nieuwe_status = request.form.get('new_status')
|
||||
incident_nr = request.form.get("incident_nr") # Zorg dat dit uit je modal komt
|
||||
|
||||
# Validatie: we hebben nu alle drie de velden nodig voor een unieke update
|
||||
if not kamxm_nummer or not nieuwe_status or not incident_nr:
|
||||
flash("Fout: Ontbrekende gegevens (Toestel, Status of Incident nr).", "error")
|
||||
return redirect(url_for('repairs.herstellingen'))
|
||||
|
||||
try:
|
||||
# Update alleen de rij waar zowel KAMXM als Incident_nr overeenkomen
|
||||
execute_query("UPDATE Signpost_herstellingen_DB SET Status_herstelling = %s WHERE Incident_ID = %s",
|
||||
(nieuwe_status, incident_nr), commit=True)
|
||||
|
||||
flash(f"Status van incident {incident_nr} ({kamxm_nummer}) is nu: {nieuwe_status}", "success")
|
||||
except Exception as err:
|
||||
flash(f"Database fout: {err}", "error")
|
||||
|
||||
return redirect(url_for('repairs.herstellingen'))
|
||||
|
||||
#-----------------------------------------------
|
||||
# --- ROUTE: GEGEVENS BEWERKEN ---
|
||||
#-----------------------------------------------
|
||||
@repairs_bp.route('/bewerk_herstelling', methods=['POST'])
|
||||
@login_required
|
||||
@recht_vereist('herstellingen')
|
||||
def bewerk_herstelling():
|
||||
# Haal de originele sleutels op om de juiste rij te vinden
|
||||
old_kamxm = request.form.get('kamxm_nummer_original')
|
||||
incident_nr = request.form.get('incident_nr') # Dit is essentieel voor de unieke selectie
|
||||
|
||||
# Haal de nieuwe waarden op
|
||||
new_kamxm = request.form.get('kamxm_nummer')
|
||||
soort = request.form.get('soort_herstelling')
|
||||
datum = request.form.get('datum')
|
||||
|
||||
try:
|
||||
toestel = tst.zoek_toestel(new_kamxm)
|
||||
if not toestel:
|
||||
flash(f"Toestel {new_kamxm} niet gevonden.", "error")
|
||||
return redirect(url_for('repairs.herstellingen'))
|
||||
execute_query("UPDATE Signpost_herstellingen_DB SET Toestel_ID = %s, Omschrijving = %s, Datum = %s "
|
||||
"WHERE Incident_ID = %s",
|
||||
(toestel['Toestel_ID'], soort, datum or None, incident_nr), commit=True)
|
||||
flash(f"Herstelling {incident_nr} voor {new_kamxm} succesvol bijgewerkt!", "success")
|
||||
except Exception as err:
|
||||
flash(f"Fout bij bijwerken: {err}", "error")
|
||||
|
||||
return redirect(url_for('repairs.herstellingen'))
|
||||
|
||||
#--------------------------------------------------
|
||||
#--- ROUTE: Signpost herstelling
|
||||
#--------------------------------------------------
|
||||
@repairs_bp.route('/herstellingen/signpost_search', methods=['POST'])
|
||||
@login_required
|
||||
@recht_vereist('herstellingen')
|
||||
def signpost_search():
|
||||
serial = request.form.get('serial_number')
|
||||
signpost_results = []
|
||||
|
||||
if serial:
|
||||
signpost_results = get_cases_by_serial(serial)
|
||||
if not signpost_results:
|
||||
flash(f"Geen Signpost cases gevonden voor {serial}", "info")
|
||||
|
||||
# We sturen de gebruiker terug naar de tab, maar met de resultaten
|
||||
# Tip: Om de tab 'active' te houden na een POST, kun je een parameter meesturen
|
||||
results = execute_query(HERSTELLINGEN_SQL + " ORDER BY h.Incident_ID DESC")
|
||||
return render_template('herstellingen.html',
|
||||
results=results,
|
||||
signpost_results=signpost_results,
|
||||
active_tab='signpost-tab',
|
||||
searched_serial=serial)
|
||||
Reference in new issue
Block a user