patchcenter/app/templates/assignments.html
Khalid MOUTAOUAKIL e0105e7e00 Fix assignations datalist restore + intervenant list filter
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 15:28:40 +02:00

103 lines
5.3 KiB
HTML

{% extends 'base.html' %}
{% block title %}Assignations par defaut{% endblock %}
{% block content %}
<div class="flex justify-between items-center mb-4">
<div>
<a href="/campaigns" class="text-xs text-gray-500 hover:text-gray-300">← Campagnes</a>
<h2 class="text-xl font-bold text-cyber-accent">Assignations par defaut</h2>
<p class="text-xs text-gray-500 mt-1">Regles appliquees automatiquement a la creation de chaque campagne. Priorite : serveur > application > app_group > domaine > zone.</p>
</div>
</div>
{% if msg %}
<div class="mb-4 p-2 rounded text-sm {% if msg == 'error' %}bg-red-900/30 text-cyber-red{% else %}bg-green-900/30 text-cyber-green{% endif %}">
{% if msg == 'added' %}Regle ajoutee.{% elif msg == 'deleted' %}Regle supprimee.{% elif msg == 'error' %}Erreur (regle dupliquee ?).{% endif %}
</div>
{% endif %}
<!-- Regles existantes -->
<div class="card overflow-x-auto">
<table class="w-full table-cyber">
<thead><tr>
<th class="p-2">Priorite</th>
<th class="p-2">Type</th>
<th class="text-left p-2">Valeur</th>
<th class="p-2">Intervenant</th>
<th class="text-left p-2">Note</th>
<th class="p-2">Actions</th>
</tr></thead>
<tbody>
{% for r in rules %}
<tr>
<td class="p-2 text-center">{{ r.priority }}</td>
<td class="p-2 text-center"><span class="badge {% if r.rule_type == 'server' %}badge-red{% elif r.rule_type == 'app_type' %}badge-yellow{% elif r.rule_type == 'domain' %}badge-blue{% elif r.rule_type == 'zone' %}badge-green{% else %}badge-gray{% endif %}">{{ r.rule_type }}</span></td>
<td class="p-2 font-mono text-sm text-cyber-accent">{{ r.rule_value }}</td>
<td class="p-2 text-center">{{ r.display_name }}</td>
<td class="p-2 text-xs text-gray-400">{{ r.note or '' }}</td>
<td class="p-2 text-center">
<form method="POST" action="/assignments/{{ r.id }}/delete" style="display:inline">
<button class="btn-sm bg-red-900/30 text-cyber-red" onclick="return confirm('Supprimer ?')">Suppr</button>
</form>
</td>
</tr>
{% endfor %}
{% if not rules %}
<tr><td colspan="6" class="p-4 text-center text-gray-500">Aucune regle definie</td></tr>
{% endif %}
</tbody>
</table>
</div>
<!-- Ajouter une regle -->
<div class="card p-4 mt-4">
<h4 class="text-sm font-bold text-cyber-accent mb-3">Ajouter une regle</h4>
<form method="POST" action="/assignments/add" class="flex gap-3 items-end flex-wrap">
<div>
<label class="text-xs text-gray-500">Type</label>
<select name="rule_type" class="text-xs py-1 px-2" id="rule-type" onchange="
var v = document.getElementById('rule-value');
var dl = document.getElementById('values-list');
var opts = document.getElementById('all-options').innerHTML;
if (this.value === 'server') { v.removeAttribute('list'); v.placeholder = 'ex: vpdsiawsus1'; v.value = ''; }
else { v.setAttribute('list', 'values-list'); v.placeholder = 'Sélectionner...'; v.value = ''; dl.innerHTML = opts; }
">
<option value="domain">Domaine</option>
<option value="app_type">Application (spécifiques)</option>
<option value="app_group">Groupe applicatif</option>
<option value="zone">Zone</option>
<option value="server">Serveur spécifique</option>
</select>
</div>
<div>
<label class="text-xs text-gray-500">Valeur</label>
<input type="text" name="rule_value" id="rule-value" class="text-xs py-1 px-2 w-44" required list="values-list" placeholder="Sélectionner...">
<datalist id="values-list">
{% for d in domains %}<option value="{{ d.code }}">{{ d.name }}</option>{% endfor %}
{% for z in zones %}<option value="{{ z.name }}">{{ z.name }}</option>{% endfor %}
{% for a in app_types %}<option value="{{ a }}">{{ a }}</option>{% endfor %}
</datalist>
<template id="all-options">
{% for d in domains %}<option value="{{ d.code }}">{{ d.name }}</option>{% endfor %}
{% for z in zones %}<option value="{{ z.name }}">{{ z.name }}</option>{% endfor %}
{% for a in app_types %}<option value="{{ a }}">{{ a }}</option>{% endfor %}
</template>
</div>
<div>
<label class="text-xs text-gray-500">Intervenant</label>
<select name="user_id" class="text-xs py-1 px-2">
{% for u in intervenants %}<option value="{{ u.id }}">{{ u.display_name }}</option>{% endfor %}
</select>
</div>
<div>
<label class="text-xs text-gray-500">Priorite</label>
<input type="number" name="priority" value="10" min="1" max="99" class="text-xs py-1 px-2 w-16">
</div>
<div class="flex-1">
<label class="text-xs text-gray-500">Note</label>
<input type="text" name="note" class="text-xs py-1 px-2 w-full" placeholder="ex: Referent EMV">
</div>
<button type="submit" class="btn-primary px-4 py-1 text-sm">Ajouter</button>
</form>
</div>
{% endblock %}