gmao/app_new/templates/ent/config.html
root 785c8aabcb
Some checks are pending
CI - Tests et Syntax / lint-and-test (push) Waiting to run
Refondre le RBAC multi-roles et securiser les acces
2026-08-21 16:46:19 +00:00

186 lines
7.8 KiB
HTML

{% extends "base.html" %}
{% block title %}Configuration ENT77 - GMAO{% endblock %}
{% block content %}
<div class="container-fluid py-4">
<div class="row mb-4">
<div class="col-12">
<h4><i class="bi bi-broadcast-pin me-2"></i>Configuration ENT77</h4>
<p class="text-muted">Surveillance automatique des messages ENT77 et création d'interventions</p>
</div>
</div>
<div class="row">
<!-- Colonne gauche : Configuration -->
<div class="col-lg-8">
<div class="card shadow-sm mb-4">
<div class="card-header bg-primary text-white">
<i class="bi bi-gear me-2"></i>Paramètres de surveillance
</div>
<div class="card-body">
<form method="POST" id="entConfigForm">
{{ form.hidden_tag() }}
<div class="row mb-3">
<div class="col-md-4">
{{ form.check_interval_minutes.label(class="form-label") }}
{{ form.check_interval_minutes(class="form-control", min=1, max=1440) }}
<div class="form-text">Vérifier les messages toutes les N minutes</div>
</div>
<div class="col-md-4">
{{ form.work_start_hour.label(class="form-label") }}
{{ form.work_start_hour(class="form-control", min=0, max=23) }}
</div>
<div class="col-md-4">
{{ form.work_end_hour.label(class="form-label") }}
{{ form.work_end_hour(class="form-control", min=1, max=24) }}
</div>
</div>
<!-- Jours ouvrés -->
<div class="mb-3">
<label class="form-label">Jours ouvrés</label>
<div class="d-flex gap-3">
{% for day_num in WORKDAYS %}
<div class="form-check">
<input class="form-check-input" type="checkbox" name="work_days" value="{{ day_num }}"
id="day_{{ day_num }}"
{% if day_num|string in (config.work_days or '') %}checked{% endif %}>
<label class="form-check-label" for="day_{{ day_num }}">
{% if day_num == 1 %}Lundi{% elif day_num == 2 %}Mardi{% elif day_num == 3 %}Mercredi{% elif day_num == 4 %}Jeudi{% elif day_num == 5 %}Vendredi{% elif day_num == 6 %}Samedi{% elif day_num == 7 %}Dimanche{% endif %}
</label>
</div>
{% endfor %}
</div>
</div>
<div class="mb-3">
{{ form.default_equipment_id.label(class="form-label") }}
{{ form.default_equipment_id(class="form-select") }}
<div class="form-text">Équipement cible pour les interventions créées automatiquement</div>
</div>
<div class="row mb-3">
<div class="col-md-6">
<div class="form-check form-switch">
<input class="form-check-input" type="checkbox" name="auto_create_intervention" id="auto_create_intervention"
{% if config.auto_create_intervention %}checked{% endif %}>
<label class="form-check-label" for="auto_create_intervention">Création automatique d'interventions</label>
</div>
</div>
<div class="col-md-6">
<div class="form-check form-switch">
<input class="form-check-input" type="checkbox" name="is_enabled" id="is_enabled"
{% if config.is_enabled %}checked{% endif %}>
<label class="form-check-label" for="is_enabled">Surveillance activée</label>
</div>
</div>
</div>
<!-- Mode Debug (optionnel) -->
{% if current_user.is_admin() %}
<div class="mb-3 p-3 bg-warning-subtle rounded">
<div class="form-check form-switch">
<input class="form-check-input" type="checkbox" name="debug_mode" id="debug_mode" value="1"
{% if config.debug_mode %}checked{% endif %}>
<label class="form-check-label fw-medium" for="debug_mode">
<i class="bi bi-bug me-1"></i>Mode Debug
</label>
</div>
<div class="form-text text-muted">Active le mode debug pour les tests Outlook/ENT (servira plus tard)</div>
</div>
{% endif %}
<button type="submit" class="btn btn-primary" id="saveButton">
<i class="bi bi-check-lg me-1"></i>Enregistrer
</button>
</form>
</div>
</div>
</div>
<!-- Colonne droite : Identifiants + Statut -->
<div class="col-lg-4">
<div class="card shadow-sm mb-4">
<div class="card-header bg-dark text-white">
<i class="bi bi-key me-2"></i>Identifiants ENT77
</div>
<div class="card-body">
{% if credential %}
<p class="mb-2">
<span class="badge bg-success"><i class="bi bi-check-circle me-1"></i>Configuré</span>
</p>
<p class="text-muted small mb-1">
<i class="bi bi-person me-1"></i>Utilisateur : <code>{{ credential.ent_username_encrypted|decrypt_value_safe|default('•••') }}</code>
</p>
<p class="text-muted small mb-1">
<i class="bi bi-clock me-1"></i>Dernière vérification :
{% if credential.last_check %}
{{ credential.last_check|datetime_fmt }}
{% else %}
<span class="text-warning">Jamais</span>
{% endif %}
</p>
<p class="text-muted small mb-3">
<i class="bi bi-shield-lock me-1"></i>Stockage : <span class="badge bg-info">Chiffré Fernet (AES-128)</span>
</p>
<a href="{{ url_for('ent.credentials') }}" class="btn btn-outline-dark btn-sm w-100">
<i class="bi bi-pencil me-1"></i>Modifier les identifiants
</a>
{% else %}
<p class="text-warning mb-3">
<i class="bi bi-exclamation-triangle me-1"></i>Aucun identifiant configuré
</p>
<a href="{{ url_for('ent.credentials') }}" class="btn btn-dark btn-sm w-100">
<i class="bi bi-key me-1"></i>Configurer les identifiants
</a>
{% endif %}
</div>
</div>
<div class="card shadow-sm">
<div class="card-header bg-secondary text-white">
<i class="bi bi-info-circle me-2"></i>Statut
</div>
<div class="card-body">
{% if config.is_enabled %}
<span class="badge bg-success fs-6"><i class="bi bi-broadcast me-1"></i>Surveillance active</span>
{% else %}
<span class="badge bg-secondary fs-6"><i class="bi bi-broadcast-pin me-1"></i>Surveillance désactivée</span>
{% endif %}
<hr>
<p class="small text-muted mb-1">Les identifiants sont chiffrés en base de données (Fernet AES-128-CBC + HMAC).</p>
<p class="small text-muted mb-0">La clé est dérivée de la SECRET_KEY Flask via PBKDF2 (480 000 itérations).</p>
</div>
</div>
</div>
</div>
</div>
{% block scripts %}
<script>
document.addEventListener('DOMContentLoaded', function() {
const form = document.getElementById('entConfigForm');
if (form) {
// Surcharge du comportement de soumission pour le débogage
form.addEventListener('submit', function(e) {
console.log('DEBUG: Formulaire soumis');
// Vérifier si le formulaire est valide
if (!form.checkValidity()) {
console.log('DEBUG: Formulaire invalide');
form.reportValidity();
e.preventDefault();
return;
}
console.log('DEBUG: Formulaire valide, soumission en cours...');
console.log('DEBUG: Données du formulaire:', new FormData(form));
});
}
});
</script>
{% endblock %}
{% endblock %}