update bill list view

This commit is contained in:
2024-01-17 17:40:38 +00:00
parent d560f56d86
commit d11dace81f
3 changed files with 65 additions and 38 deletions

View File

@@ -57,8 +57,11 @@ class BillListView(LoginRequiredMixin, ListView):
model = Bill
template_name = "finance/index.html"
paginate_by = 10
def get_queryset(self):
return Bill.objects.filter(bill_creator__username=self.request.user)
qs = Bill.objects.filter(bill_creator__username=self.request.user)
return qs.order_by("-date")
class BillUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):

View File

@@ -1,50 +1,74 @@
{% extends "base.html" %}
{% block title %}Übersicht über die Rechnungen{% endblock %}
{% block title %}Eingereichte Rechnungen{% endblock %}
{% block content %}
<!-- Main Content -->
<main class="container mx-auto w-full px-4 my-8 flex-1">
<h1 class="page-title">Übersicht über alle von dir eingereichten Rechnungen</h1>
<section>
<div class="mx-auto max-w-prose flex flex-col gap-4">
{% for result in object_list %}
<a class="flex gap-x-4 group" href="{% url 'finance:bill_update' result.id %}">
<article class="flex-grow-0 self-center">
<h2 class="line-clamp-1 hover:underline decoration-1 text-gray-800 dark:text-gray-200 font-medium">Verwendungszweck: {{ result.purpose }}</h2>
<ul class="text-gray-700 dark:text-gray-300 text-sm sm:text-base">
<li><i class="fa-fw text-gray-600 dark:text-gray-400 mr-1"></i>{{ result.date }}</li>
<li><i class="fa-fw text-gray-600 dark:text-gray-400 mr-1"></i>{{ result.amount }}€</li>
<li><i class="fa-fw text-gray-600 dark:text-gray-400 mr-1"></i>Status: {{ result.get_status_display }}</li>
</ul>
</article>
<h1 class="page-title">Eingereichte Rechnungen</h1>
<a href="{% url 'finance:bill_create' %}" class="page-subtitle block btn-small btn-primary max-w-xs mx-auto sm:w-max sm:mr-0 sm:ml-auto">
<i class="fa-solid fa-plus mr-1"></i> Rechnung einreichen
</a>
<div class="mx-auto max-w-5xl">
<div class="overflow-x-scroll shadow rounded">
<table class="w-full">
<thead>
<tr>
<th class="text-right">Datum</th>
<th class="text-left">Verwendungszweck</th>
<th class="text-right">Summe</th>
<th>Status</th>
<th></th>
</tr>
</thead>
<tbody>
{% for result in object_list %}
<tr>
<td class="text-right">{{ result.date|date:"d.m.Y" }}</td>
<td>{{ result.purpose }}</td>
<td class="text-right">{{ result.amount }}€</td>
<td class="text-center">
{% if result.status == result.Status.SUBMITTED %}
<span class="badge badge-info">{{ result.get_status_display }}</span>
{% elif result.status == result.Status.INCOMPLETE %}
<span class="badge badge-danger">{{ result.get_status_display }}</span>
{% elif result.status == result.Status.CLEARED %}
<span class="badge badge-warning">{{ result.get_status_display }}</span>
{% elif result.status == result.Status.FINISHED %}
<span class="badge badge-success">{{ result.get_status_display }}</span>
{% endif %}
</td>
<td>
<a href="{% url 'finance:bill_update' result.id %}" class="btn btn-small btn-tertiary"><i class="fa-solid fa-pen-to-square" aria-label="Bearbeiten" title="Bearbeiten"></i></a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</section>
{% if not object_list %}
<section>
<div class="mx-auto max-w-prose flex flex-col gap-4">
<h2 class="mb-1 text-gray-700 dark:text-gray-200">Keine Rechnungen für dich in dieser Liste.</h2>
</div>
</section>
<div class="mt-4 w-full flex flex-col-reverse sm:flex-row gap-y-4 justify-between items-center">
<div class="pagination-container">
<div class="pagination">
<span class="step-links">
{% if page_obj.has_previous %}
<a href="?page={{ page_obj.previous_page_number }}"><i class="fa-solid fa-arrow-left" aria-label="Eine Seite zurück"></i> Zurück</a>
<a href="?page=1">1</a>
{% endif %}
<div class="flex flex-col gap-y-4 max-w-prose mx-auto text-gray-700 dark:text-gray-300">
<section>
<div class="flex flex-col md:flex-row gap-y-2 md:gap-y-0 md:gap-x-2 lg:justify-end mt-4">
<a
href="{% url 'finance:bill_create' %}"
class="btn btn-primary block md:flex-grow lg:flex-grow-0"
>
<i class="fa-solid fa-plus-square mr-2"></i>Rechnung einreichen
</a>
<span class="current active">
<a href="#" class="active">{{ page_obj.number }}</a>
</span>
{% if page_obj.has_next %}
<a href="?page={{ page_obj.paginator.num_pages }}">{{ page_obj.paginator.num_pages }}</a>
<a href="?page={{ page_obj.next_page_number }}">Vor <i class="fa-solid fa-arrow-right" aria-label="Eine Seite vor"></i></a>
{% endif %}
</span>
</div>
</div>
</div>
</section>
</div>
</main>
{% endblock %}

View File

@@ -58,7 +58,7 @@
<li>
<a href="{% url 'finance:bill_list' %}" class="flex items-center py-2 px-5 hover:bg-gray-100 dark:hover:bg-gray-600 hover:text-gray-900 dark:hover:text-white">
<i class="fa-solid fa-list mr-2"></i>
<span class="text-sm font-medium">Deine eingereichten Rechnungen</span>
<span class="text-sm font-medium">Eingereichte Rechnungen</span>
</a>
</li>
<li>