feat: add comprehensive GitHub workflow and development tools

This commit is contained in:
Stiftung Development
2025-09-06 18:31:54 +02:00
commit ab23d7187e
10224 changed files with 2075210 additions and 0 deletions

View File

@@ -0,0 +1,224 @@
{% extends 'base.html' %}
{% load humanize %}
{% block title %}Rentmeister - van Hees-Theyssen-Vogel'sche Stiftung{% endblock %}
{% block content %}
<div class="row">
<div class="col-12">
<div class="d-sm-flex align-items-center justify-content-between mb-4">
<h1 class="h3 mb-0 text-gray-800">
<i class="fas fa-user-tie me-2"></i>Rentmeister
</h1>
<div class="btn-group" role="group">
<a href="{% url 'stiftung:geschaeftsfuehrung' %}" class="btn btn-outline-secondary">
<i class="fas fa-arrow-left me-1"></i>Zurück zur Übersicht
</a>
<a href="{% url 'stiftung:rentmeister_create' %}" class="btn btn-primary">
<i class="fas fa-plus me-1"></i>Neuen Rentmeister anlegen
</a>
</div>
</div>
</div>
</div>
<!-- Aktive Rentmeister -->
{% if aktive_rentmeister %}
<div class="row">
<div class="col-12">
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-primary">
<i class="fas fa-user-check me-2"></i>Aktive Rentmeister ({{ aktive_rentmeister.count }})
</h6>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Kontakt</th>
<th>Adresse</th>
<th>Im Amt seit</th>
<th>Vergütung</th>
<th>Aktionen</th>
</tr>
</thead>
<tbody>
{% for rentmeister in aktive_rentmeister %}
<tr>
<td>
<strong>{{ rentmeister }}</strong>
{% if rentmeister.titel %}
<br><small class="text-muted">{{ rentmeister.titel }}</small>
{% endif %}
</td>
<td>
{% if rentmeister.email %}
<i class="fas fa-envelope me-1"></i>{{ rentmeister.email }}<br>
{% endif %}
{% if rentmeister.telefon %}
<i class="fas fa-phone me-1"></i>{{ rentmeister.telefon }}<br>
{% endif %}
{% if rentmeister.mobil %}
<i class="fas fa-mobile-alt me-1"></i>{{ rentmeister.mobil }}
{% endif %}
</td>
<td>
{% if rentmeister.get_address %}
{{ rentmeister.get_address }}
{% else %}
<span class="text-muted">-</span>
{% endif %}
</td>
<td>{{ rentmeister.seit_datum|date:"d.m.Y" }}</td>
<td>
{% if rentmeister.monatliche_verguetung %}
€{{ rentmeister.monatliche_verguetung|floatformat:2 }}/Monat<br>
{% endif %}
<small class="text-muted">KM: €{{ rentmeister.km_pauschale|floatformat:2 }}/km</small>
</td>
<td>
<div class="btn-group btn-group-sm" role="group">
<a href="{% url 'stiftung:rentmeister_detail' rentmeister.pk %}" class="btn btn-outline-primary" title="Details ansehen">
<i class="fas fa-eye"></i>
</a>
<a href="{% url 'stiftung:rentmeister_edit' rentmeister.pk %}" class="btn btn-outline-warning" title="Bearbeiten">
<i class="fas fa-edit"></i>
</a>
<a href="{% url 'stiftung:rentmeister_ausgaben' rentmeister.pk %}" class="btn btn-outline-info" title="Ausgaben">
<i class="fas fa-file-invoice-dollar"></i>
</a>
</div>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
{% endif %}
<!-- Ehemalige Rentmeister -->
{% if ehemalige_rentmeister %}
<div class="row">
<div class="col-12">
<div class="card shadow mb-4">
<div class="card-header py-3">
<h6 class="m-0 font-weight-bold text-secondary">
<i class="fas fa-user-times me-2"></i>Ehemalige Rentmeister ({{ ehemalige_rentmeister.count }})
</h6>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-striped">
<thead>
<tr>
<th>Name</th>
<th>Zeitraum</th>
<th>Kontakt</th>
<th>Aktionen</th>
</tr>
</thead>
<tbody>
{% for rentmeister in ehemalige_rentmeister %}
<tr class="table-light">
<td>
<strong>{{ rentmeister }}</strong>
{% if rentmeister.titel %}
<br><small class="text-muted">{{ rentmeister.titel }}</small>
{% endif %}
</td>
<td>
{{ rentmeister.seit_datum|date:"d.m.Y" }} -
{% if rentmeister.bis_datum %}
{{ rentmeister.bis_datum|date:"d.m.Y" }}
{% else %}
<span class="text-muted">offen</span>
{% endif %}
</td>
<td>
{% if rentmeister.email %}
<i class="fas fa-envelope me-1"></i>{{ rentmeister.email }}
{% else %}
<span class="text-muted">-</span>
{% endif %}
</td>
<td>
<div class="btn-group btn-group-sm" role="group">
<a href="{% url 'stiftung:rentmeister_detail' rentmeister.pk %}" class="btn btn-outline-secondary" title="Details ansehen">
<i class="fas fa-eye"></i>
</a>
<a href="{% url 'stiftung:rentmeister_ausgaben' rentmeister.pk %}" class="btn btn-outline-info" title="Ausgaben">
<i class="fas fa-file-invoice-dollar"></i>
</a>
</div>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
{% endif %}
<!-- Wenn keine Rentmeister vorhanden -->
{% if not aktive_rentmeister and not ehemalige_rentmeister %}
<div class="row">
<div class="col-12">
<div class="card shadow mb-4">
<div class="card-body text-center py-5">
<i class="fas fa-user-tie fa-3x text-muted mb-3"></i>
<h5 class="text-muted">Noch keine Rentmeister angelegt</h5>
<p class="text-muted">Legen Sie die ersten Rentmeister der Stiftung an, um Ausgaben und Abrechnungen zu verwalten.</p>
<a href="{% url 'stiftung:rentmeister_create' %}" class="btn btn-primary">
<i class="fas fa-plus me-1"></i>Ersten Rentmeister anlegen
</a>
</div>
</div>
</div>
</div>
{% endif %}
<!-- Statistiken -->
{% if total_count > 0 %}
<div class="row">
<div class="col-md-4">
<div class="card border-primary">
<div class="card-body text-center">
<i class="fas fa-user-tie fa-2x text-primary mb-2"></i>
<h4>{{ total_count }}</h4>
<small class="text-muted">Gesamt Rentmeister</small>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card border-success">
<div class="card-body text-center">
<i class="fas fa-user-check fa-2x text-success mb-2"></i>
<h4>{{ aktive_rentmeister.count }}</h4>
<small class="text-muted">Aktive Rentmeister</small>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card border-secondary">
<div class="card-body text-center">
<i class="fas fa-user-times fa-2x text-secondary mb-2"></i>
<h4>{{ ehemalige_rentmeister.count }}</h4>
<small class="text-muted">Ehemalige Rentmeister</small>
</div>
</div>
</div>
</div>
{% endif %}
{% endblock %}