gmao/app_new/companies/routes.py

56 lines
2.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
Companies Routes - GMAO Collège
Gestion des entreprises
"""
from flask import Blueprint, render_template, request, flash, redirect, url_for
from flask_login import login_required
from app_new.extensions import db
from ..core.models.company import Company
companies_bp = Blueprint('companies', __name__)
@companies_bp.route('/')
@login_required
def index():
"""Liste des entreprises."""
page = request.args.get('page', 1, type=int)
companies = Company.query.order_by(Company.name).paginate(page=page, per_page=20)
return render_template('companies/index.html', companies=companies)
@companies_bp.route('/<int:id>')
@login_required
def detail(id):
"""Détail d'une entreprise."""
company = Company.query.get_or_404(id)
from ..core.models.maintenance import Intervention
interventions = Intervention.query.filter_by(company_id=id, is_deleted=False).all()
return render_template('companies/detail.html', company=company, interventions=interventions)
@companies_bp.route('/new', methods=['GET', 'POST'])
@login_required
def create():
"""Créer une entreprise."""
if request.method == 'POST':
name = (request.form.get('name') or '').strip()
if not name:
flash('Le nom de lentreprise est obligatoire.', 'danger')
return render_template('companies/new.html', form_data=request.form), 400
company = Company(
name=name,
address=request.form.get('address'),
contact_phone=request.form.get('contact_phone') or request.form.get('phone'),
contact_email=request.form.get('contact_email') or request.form.get('email'),
contact_name=request.form.get('contact_name'),
specialty=request.form.get('specialty'),
)
db.session.add(company)
try:
db.session.commit()
except Exception:
db.session.rollback()
flash('Impossible denregistrer cette entreprise. Vérifiez les données saisies.', 'danger')
return render_template('companies/new.html', form_data=request.form), 400
flash('Entreprise créée avec succès.', 'success')
return redirect(url_for('companies.index'))
return render_template('companies/new.html')