Complete dashboard loose ends and reconcile blocked pilot work
All checks were successful
Application acceptance / application-tests (push) Successful in 1m26s
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Build and Publish Container Image / build-and-push (push) Successful in 34s

Assistant: codex
Assistant-Model: gpt-6-astra
Assistant-Session: 01a0e394-2a69-7df0-8980-22a0ebe55216
This commit is contained in:
tegwick 2026-09-27 18:34:48 +02:00
parent 387b7e9782
commit 35df9bb772
13 changed files with 325 additions and 55 deletions

View file

@ -98,5 +98,19 @@
{% endif %}
</div>
<div class="card">
<div class="flex items-center justify-between mb-3">
<h2 class="text-sm font-semibold text-slate-700">Ablaufende Nachweise (60 Tage)</h2>
<span class="text-sm">{{ ablaufende_nachweise|length }}</span>
</div>
{% for n in ablaufende_nachweise %}
<div class="flex items-center justify-between py-1 text-sm">
<a href="{% url 'bibliothek:nachweis_detail' pk=n.pk %}" class="text-brand-700 hover:underline">{{ n.titel }}</a>
<span class="{% if n.gueltig_bis < today %}text-red-600{% else %}text-amber-600{% endif %}">{{ n.gueltig_bis|date:"d.m.Y" }}</span>
</div>
{% empty %}
<p class="text-slate-400 text-sm">Keine ablaufenden Nachweise.</p>
{% endfor %}
</div>
</div>
{% endblock %}

View file

@ -119,6 +119,11 @@
<label class="form-label">Teilnahmeentscheidung</label>
{{ form.teilnahmeentscheidung }}
</div>
<div>
<label class="form-label" for="id_ergebnis">Ergebnis</label>
{{ form.ergebnis }}
{{ form.ergebnis.errors }}
</div>
<div>
<label class="form-label">Begründung</label>
{{ form.entscheidungsbegruendung }}

View file

@ -13,8 +13,12 @@
hx-get="{% url 'ausschreibungen:liste' %}"
hx-target="#ausschreibungen-table"
hx-push-url="true"
hx-trigger="change from:select, change from:input[type=checkbox]"
hx-trigger="change from:select, change from:input[type=checkbox], input changed delay:300ms from:input[type=search]"
class="flex flex-wrap gap-3 items-end">
<div>
<label for="tender-search" class="form-label">Suche</label>
<input id="tender-search" type="search" name="q" value="{{ q }}" class="form-input" placeholder="Titel oder Ausschreiber">
</div>
<div>
<label class="form-label">Status</label>
<select name="status" class="form-input">