
- Added verbose names for Incident and ResidualRisk models for better clarity in admin interface. - Updated impact choices for ResidualRisk and Risk models to ensure consistency and clarity. - Implemented gettext_lazy for translatable strings in models and choices. - Enhanced the Risk, ResidualRisk, Control, AuditLog, and Incident models with Meta options for better admin representation. - Added login required decorators to views for improved security. - Introduced new CSS variables and classes for better visual representation of risk levels. - Created custom template tags for dynamic CSS class assignment based on risk likelihood and impact. - Improved dashboard and statistics views with user authentication checks. - Updated templates for risks, controls, incidents, and admin interface to include edit and delete options for staff users. - Added new login and logout templates for user authentication. - Enhanced list views for risks, controls, and incidents to include action buttons for staff users. - Improved overall UI/UX with Bulma CSS framework for a more modern look and feel.
177 lines
No EOL
6.2 KiB
HTML
177 lines
No EOL
6.2 KiB
HTML
{% extends "base.html" %}
|
||
{% block crumbs %}
|
||
<li><a href="{% url 'risks:list_controls' %}">Maßnahmen</a></li>
|
||
{% endblock %}
|
||
{% block content %}
|
||
<!-- Filter -->
|
||
<section class="section">
|
||
<div class="box">
|
||
<h2 class="title is-5">Auswahl</h2>
|
||
|
||
<form method="get">
|
||
<div class="columns is-multiline">
|
||
|
||
<!-- Maßnahmen -->
|
||
<div class="column is-3">
|
||
<div class="field">
|
||
<label class="label">Maßnahme</label>
|
||
<div class="control">
|
||
<div class="select is-fullwidth">
|
||
<select name="control" onchange="this.form.submit()">
|
||
<option value="">Alle</option>
|
||
{% for c in controls %}
|
||
<option value="{{ c.id }}" {% if request.GET.control == c.id|stringformat:"s" %}selected{% endif %}>
|
||
{{ c.title }}
|
||
</option>
|
||
{% endfor %}
|
||
</select>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Risiko -->
|
||
<div class="column is-3">
|
||
<div class="field">
|
||
<label class="label">Risiko</label>
|
||
<div class="control">
|
||
<div class="select is-fullwidth">
|
||
<select name="risk" onchange="this.form.submit()">
|
||
<option value="">Alle</option>
|
||
{% for r in risks %}
|
||
<option value="{{ r.id }}" {% if request.GET.risk == r.id|stringformat:"s" %}selected{% endif %}>
|
||
{{ r.title }}
|
||
</option>
|
||
{% endfor %}
|
||
</select>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Status -->
|
||
<div class="column is-3">
|
||
<div class="field">
|
||
<label class="label">Status</label>
|
||
<div class="control">
|
||
<div class="select is-fullwidth">
|
||
<select name="status" onchange="this.form.submit()">
|
||
<option value="">Alle</option>
|
||
{% for key,label in status_choices %}
|
||
<option value="{{ key }}" {% if request.GET.status == key %}selected{% endif %}>
|
||
{{ label }}
|
||
</option>
|
||
{% endfor %}
|
||
</select>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Verantwortliche/r -->
|
||
<div class="column is-3">
|
||
<div class="field">
|
||
<label class="label">Verantwortliche/r</label>
|
||
<div class="control">
|
||
<div class="select is-fullwidth">
|
||
<select name="responsible" onchange="this.form.submit()">
|
||
<option value="">Alle</option>
|
||
{% for u in users %}
|
||
<option value="{{ u.id }}" {% if request.GET.responsible == u.id|stringformat:"s" %}selected{% endif %}>
|
||
{{ u.get_full_name|default:u.username }}
|
||
</option>
|
||
{% endfor %}
|
||
</select>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</form>
|
||
|
||
<h2 class="title is-5">Maßnahmen</h2>
|
||
|
||
<div class="table-container">
|
||
<table class="table is-bordered is-striped is-hoverable is-fullwidth">
|
||
<thead>
|
||
<tr>
|
||
{% if request.user.is_staff %}<th></th>{% endif %}
|
||
<th>Maßnahme</th>
|
||
<th>Risiken</th>
|
||
<th>Verantwortliche/r</th>
|
||
<th>Status</th>
|
||
<th>Frist</th>
|
||
<th>Link</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{% if request.user.is_staff %}
|
||
<tr>
|
||
<td class="has-text-centered">
|
||
<a class="icon has-text-success" href="{% url 'admin:risks_risk_add' %}" title="Maßnahme hinzufügen">
|
||
<i class="fas fa-add"></i>
|
||
</a>
|
||
</td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
<td></td>
|
||
</tr>
|
||
{% endif %}
|
||
{% for c in controls %}
|
||
<tr>
|
||
{% if request.user.is_staff %}
|
||
<td class="has-text-centered">
|
||
<a class="icon has-text-warning" href="{% url 'admin:risks_control_change' c.id %}" title="Maßnahme bearbeiten">
|
||
<i class="fas fa-edit"></i>
|
||
</a>
|
||
</td>
|
||
{% endif %}
|
||
<td onclick="window.location.href='{% url 'risks:show_control' c.id %}'" style="cursor:pointer;">{{ c.title }}</td>
|
||
<td onclick="window.location.href='{% url 'risks:show_control' c.id %}'" style="cursor:pointer;">
|
||
{% if c.risk %}
|
||
<a href="{% url 'risks:show_risk' c.risk.id %}" onclick="event.stopPropagation();">
|
||
{{ c.risk.title }}
|
||
</a>
|
||
{% else %}
|
||
–
|
||
{% endif %}
|
||
</td>
|
||
<td onclick="window.location.href='{% url 'risks:show_control' c.id %}'" style="cursor:pointer;">
|
||
{% if c.responsible %}
|
||
{{ c.responsible.get_full_name|default:c.responsible.username }}
|
||
{% else %}
|
||
–
|
||
{% endif %}
|
||
</td>
|
||
<td onclick="window.location.href='{% url 'risks:show_control' c.id %}'" style="cursor:pointer;">{{ c.get_status_display }}</td>
|
||
<td onclick="window.location.href='{% url 'risks:show_control' c.id %}'" style="cursor:pointer;">
|
||
{% if c.due_date %}
|
||
{{ c.due_date|date:"d.m.Y" }}
|
||
{% else %}
|
||
–
|
||
{% endif %}
|
||
</td>
|
||
<td>
|
||
{% if c.wiki_link %}
|
||
<a href="{{ c.wiki_link }}" target="_blank">🔗</a>
|
||
{% else %}
|
||
–
|
||
{% endif %}
|
||
</td>
|
||
</tr>
|
||
{% empty %}
|
||
<tr>
|
||
<td colspan="6" class="has-text-centered has-text-grey">Keine Maßnahmen gefunden</td>
|
||
</tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
{% endblock %} |