54 lines
2.2 KiB
Python
54 lines
2.2 KiB
Python
|
|
"""Interventions Planning Routes - GMAO Collège"""
|
||
|
|
from flask import Blueprint, render_template, redirect, url_for, request, flash, jsonify
|
||
|
|
from flask_login import login_required, current_user
|
||
|
|
from app_new.extensions import db
|
||
|
|
from ..core.models.maintenance import Intervention, InterventionComment
|
||
|
|
from ..core.models.equipment import Equipment
|
||
|
|
from ..core.models.user import User
|
||
|
|
from datetime import datetime
|
||
|
|
|
||
|
|
planning_bp = Blueprint("interventions_planning", __name__, url_prefix="/interventions", template_folder="templates")
|
||
|
|
|
||
|
|
@planning_bp.route('/planning')
|
||
|
|
@login_required
|
||
|
|
def planning():
|
||
|
|
"""Planning des interventions préventives."""
|
||
|
|
from datetime import datetime, timezone, timedelta
|
||
|
|
|
||
|
|
# Recuperer les interventions preventives planifiees
|
||
|
|
preventive_interventions = Intervention.query.filter(
|
||
|
|
Intervention.type == 'preventif',
|
||
|
|
Intervention.scheduled_date != None
|
||
|
|
).order_by(Intervention.scheduled_date).all()
|
||
|
|
|
||
|
|
return render_template('interventions/planning.html',
|
||
|
|
interventions=preventive_interventions,
|
||
|
|
stats={'total': len(preventive_interventions), 'en_attente': 0, 'en_cours': 0, 'terminee': 0})
|
||
|
|
|
||
|
|
|
||
|
|
@planning_bp.route('/<int:id>/delete', methods=['POST'])
|
||
|
|
@login_required
|
||
|
|
def delete(id):
|
||
|
|
"""Supprimer définitivement une intervention."""
|
||
|
|
intervention = Intervention.query.get_or_404(id)
|
||
|
|
db.session.delete(intervention)
|
||
|
|
db.session.commit()
|
||
|
|
flash('Intervention supprimée définitivement.', 'success')
|
||
|
|
return redirect(url_for('interventions.index'))
|
||
|
|
|
||
|
|
|
||
|
|
@planning_bp.route('/<int:id>/restore', methods=['POST'])
|
||
|
|
@login_required
|
||
|
|
def restore(id):
|
||
|
|
"""Restaurer une intervention depuis la corbeille."""
|
||
|
|
intervention = Intervention.query.get_or_404(id)
|
||
|
|
if not intervention.is_deleted:
|
||
|
|
flash("Cette intervention n'est pas dans la corbeille.", 'warning')
|
||
|
|
return redirect(url_for('interventions.detail', id=intervention.id))
|
||
|
|
|
||
|
|
intervention.is_deleted = False
|
||
|
|
intervention.deleted_at = None
|
||
|
|
intervention.deleted_by_id = None
|
||
|
|
db.session.commit()
|
||
|
|
flash('Intervention restaurée.', 'success')
|
||
|
|
return redirect(url_for('interventions.detail', id=intervention.id))
|