"""Routes zones - GMAO Collège""" from flask import Blueprint, render_template, redirect, url_for, request, flash, jsonify from flask_login import login_required from app_new.extensions import db from app_new.core.models.college import Building, Zone zones_bp = Blueprint('zones', __name__, template_folder='templates') @zones_bp.route('/') @login_required def index(): """Liste des zones.""" zones = Zone.query.join(Building).order_by(Building.name, Zone.name).all() return render_template('equipments/zones.html', zones=zones) @zones_bp.route('/new', methods=['GET', 'POST']) @login_required def create(): """Créer une zone.""" if request.method == 'POST': zone = Zone( name=request.form.get('name'), building_id=request.form.get('building_id', type=int) ) db.session.add(zone) db.session.commit() flash(f"Zone '{zone.name}' créée.", 'success') return redirect(url_for('zones.index')) buildings = Building.query.order_by(Building.name).all() return render_template('equipments/zone_form.html', title='Nouvelle zone', buildings=buildings) @zones_bp.route('//edit', methods=['GET', 'POST']) @login_required def edit(id): """Modifier une zone.""" zone = Zone.query.get_or_404(id) if request.method == 'POST': zone.name = request.form.get('name') zone.building_id = request.form.get('building_id', type=int) db.session.commit() flash(f"Zone '{zone.name}' mise à jour.", 'success') return redirect(url_for('zones.index')) buildings = Building.query.order_by(Building.name).all() return render_template('equipments/zone_form.html', title='Modifier la zone', zone=zone, buildings=buildings) @zones_bp.route('//delete', methods=['POST']) @login_required def delete(id): """Supprimer une zone.""" zone = Zone.query.get_or_404(id) db.session.delete(zone) db.session.commit() flash(f"Zone '{zone.name}' supprimée.", 'success') return redirect(url_for('zones.index')) @zones_bp.route('/', methods=['DELETE']) @login_required def delete_api(id): """Supprimer une zone via API (DELETE).""" zone = Zone.query.get_or_404(id) db.session.delete(zone) db.session.commit() return jsonify({'success': True})