
- Added Notification model with admin interface for managing notifications. - Created context processor to count unread notifications for the user. - Introduced forms for updating the status of Risk, Control, Incident, and ResidualRisk. - Added views for displaying and managing notifications, including marking them as read. - Updated URLs to include routes for notifications and status updates. - Enhanced templates to support notifications display and status update forms. - Improved CSS for avatar and badge display in the navbar. - Translated various static texts to support internationalization.
157 lines
No EOL
5.3 KiB
HTML
157 lines
No EOL
5.3 KiB
HTML
{% extends "base.html" %}
|
||
{% block crumbs %}
|
||
<li><a href="{% url 'risks:list_incidents' %}">Vorfälle</a></li>
|
||
<li><a href="{% url 'risks:show_incident' incident.id %}">{{ incident.title }}</a></li>
|
||
{% endblock %}
|
||
{% block content %}
|
||
<div class="container">
|
||
<section class="hero is-small">
|
||
<div class="hero-body">
|
||
<p class="title">Vorfall: {{ incident.title }}</p>
|
||
<p class="subtitle is-6">{{ incident.description }}</p>
|
||
</div>
|
||
</section>
|
||
<!-- Überblick-->
|
||
<div class="card">
|
||
<header class="card-header">
|
||
<p class="card-header-title">Überblick</p>
|
||
|
||
{% if request.user.is_staff or incident.reported_by_id == request.user.id %}
|
||
<form method="post" action="{% url 'risks:update_incident_status' incident.id %}" class="card-header-icon" style="margin-left:auto;">
|
||
{% csrf_token %}
|
||
<div class="field has-addons">
|
||
<div class="control">
|
||
<div class="select is-small">
|
||
<select name="status">
|
||
{% for value,label in incident.STATUS_CHOICES %}
|
||
<option value="{{ value }}" {% if incident.status == value %}selected{% endif %}>{{ label }}</option>
|
||
{% endfor %}
|
||
</select>
|
||
</div>
|
||
</div>
|
||
<div class="control">
|
||
<button class="button is-small is-link">
|
||
<span class="icon"><i class="fas fa-save"></i></span>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
<a class="card-header-icon has-text-warning" href="{% url 'admin:risks_incident_change' incident.pk %}" title="Vorfall bearbeiten">
|
||
<span class="icon"><i class="fas fa-edit" aria-hidden="true"></i></span>
|
||
</a>
|
||
<a class="card-header-icon has-text-danger" href="{% url 'admin:risks_incident_delete' incident.pk %}" title="Vorfall Löschen (WARNUNG!)">
|
||
<span class="icon"><i class="fas fa-trash" aria-hidden="true"></i></span>
|
||
</a>
|
||
{% endif %}
|
||
</header>
|
||
<!-- Inhalt Überblick-->
|
||
<div class="card-content">
|
||
<div class="columns is-multiline">
|
||
<div class="column is-half">
|
||
<p><strong>Gemeldet von:</strong> {{ incident.reported_by|default:"-" }}</p>
|
||
<p><strong>Gemeldet am:</strong> {{ incident.date_reported|date:'d.m.Y' }}</p>
|
||
<p><strong>Status:</strong> {{ incident.status }}</p>
|
||
</div>
|
||
<div class="column is-half">
|
||
<p><strong>Erstellt am:</strong> {{ incident.created_at|date:'d.m.Y H:i' }}</p>
|
||
<p><strong>Aktualisiert am:</strong> {{ incident.updated_at|date:'d.m.Y H:i' }}</p>
|
||
</div>
|
||
</div>
|
||
</div> <!-- Ende Inhalt Überblick -->
|
||
</div> <!-- Ende Überblick -->
|
||
|
||
<!-- Risiken -->
|
||
<div class="card">
|
||
<header class="card-header">
|
||
<p class="card-header-title">Zugehörige Risiken</p>
|
||
</header>
|
||
<div class="card-content">
|
||
{% if incident.related_risks %}
|
||
<table class="table is-striped is-hoverable is-fullwidth">
|
||
<thead>
|
||
<tr>
|
||
<th>Titel</th>
|
||
<th>Risikoeigner</th>
|
||
<th>Kategorie</th>
|
||
<th>Asset</th>
|
||
<th>Prozess</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{% for risk in incident.related_risks.all %}
|
||
<tr onclick="window.location.href='/risks/risks/{{ risk.id }}';" style="cursor:pointer;">
|
||
<td>{{ risk.title }}</td>
|
||
<td>
|
||
{% if risk.owner %}
|
||
{{ risk.owner }}
|
||
{% else %}
|
||
–
|
||
{% endif %}
|
||
</td>
|
||
<td>
|
||
{% if risk.category %}
|
||
{{ risk.category }}
|
||
{% else %}
|
||
–
|
||
{% endif %}
|
||
</td>
|
||
<td>
|
||
{% if risk.asset %}
|
||
{{ risk.asset }}
|
||
{% else %}
|
||
–
|
||
{% endif %}
|
||
</td>
|
||
<td>
|
||
{% if risk.process %}
|
||
{{ risk.process }}
|
||
{% else %}
|
||
–
|
||
{% endif %}
|
||
</td>
|
||
</tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
{% else %}
|
||
<p class="has-text-grey">Keine Verknüpften Risiken.</p>
|
||
{% endif %}
|
||
</div>
|
||
</div>
|
||
<!-- Ende Maßnahmen -->
|
||
|
||
<!-- Historie -->
|
||
<div class="card">
|
||
<header class="card-header">
|
||
<p class="card-header-title">Historie</p>
|
||
</header>
|
||
<div class="card-content">
|
||
{% if logs %}
|
||
<table class="table is-striped is-fullwidth">
|
||
<thead>
|
||
<tr>
|
||
<th>Zeitpunkt</th>
|
||
<th>Benutzer</th>
|
||
<th>Aktion</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{% for log in logs %}
|
||
<tr>
|
||
<td>{{ log.action_time|date:"d.m.Y H:i" }}</td>
|
||
<td>{{ log.user.get_full_name|default:log.user.username }}</td>
|
||
<td>{{ log.get_change_message }}</td>
|
||
</tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
{% else %}
|
||
<p class="has-text-grey">Keine Historie vorhanden.</p>
|
||
{% endif %}
|
||
</div>
|
||
</div> <!-- Ende Historie -->
|
||
|
||
<br><br>
|
||
|
||
</div>
|
||
{% endblock %} |