Improvement in the expense_list view and html
This commit is contained in:
parent
b75efb1553
commit
9e2c4f17db
@ -31,6 +31,6 @@
|
|||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<a href="{% url 'home' %}">Volver</a>
|
<a href="{% url 'expense_list' %}">Volver</a>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@ -6,31 +6,67 @@
|
|||||||
<body>
|
<body>
|
||||||
<h1>Mis gastos</h1>
|
<h1>Mis gastos</h1>
|
||||||
|
|
||||||
|
<form method="get">
|
||||||
|
<label>
|
||||||
|
Año:
|
||||||
|
<input type="number" name="year" value="{{ selected_year }}">
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label>
|
||||||
|
Mes:
|
||||||
|
<input type="number" name="month" value="{{ selected_month }}">
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<label>
|
||||||
|
Categoría:
|
||||||
|
<select name="category">
|
||||||
|
<option value="">Todas</option>
|
||||||
|
{% for cat in categories %}
|
||||||
|
<option value="{{ cat.id }}"
|
||||||
|
{% if selected_category == cat.id|stringformat:"s" %}selected{% endif%}
|
||||||
|
>
|
||||||
|
{{ cat.name }}
|
||||||
|
</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<button type="submit">Filtrar</button>
|
||||||
|
<a href="{% url 'expense_list' %}">Limpiar</a>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
<a href="{% url 'expense_create' %}">Añadir gasto</a>
|
<a href="{% url 'expense_create' %}">Añadir gasto</a>
|
||||||
|
|
||||||
<table border="1">
|
<br>
|
||||||
<tr>
|
|
||||||
<th>Fecha</th>
|
|
||||||
<th>Importe</th>
|
|
||||||
<th>Categoría</th>
|
|
||||||
<th>Cuenta</th>
|
|
||||||
<th>Acciones</th>
|
|
||||||
</tr>
|
|
||||||
{% for expense in expenses %}
|
|
||||||
<tr>
|
|
||||||
<td>{{ expense.date }}</td>
|
|
||||||
<td>{{ expense.amount }}</td>
|
|
||||||
<td>{{ expense.category }}</td>
|
|
||||||
<td>{{ expense.account }}</td>
|
|
||||||
<td> <a href="{% url 'expense_edit' expense.pk %}">Editar</a></td>
|
|
||||||
<td> <a href="{% url 'expense_delete' expense.pk %}">Borrar</a></td>
|
|
||||||
</tr>
|
|
||||||
{% empty %}
|
|
||||||
<tr>
|
|
||||||
<td colspan="4">No hay gastos todavía</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
{% endfor %}
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Fecha</th>
|
||||||
|
<th>Categoría</th>
|
||||||
|
<th>Importe</th>
|
||||||
|
<th></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for expense in expenses %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ expense.date }}</td>
|
||||||
|
<td>{{ expense.category.name }}</td>
|
||||||
|
<td>{{ expense.amount }}</td>
|
||||||
|
<td>
|
||||||
|
<a href="{% url 'expense_edit' expense.id %}">Editar</a>
|
||||||
|
<a href="{% url 'expense_delete' expense.id %}">Eliminar</a>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% empty %}
|
||||||
|
<tr>
|
||||||
|
<td colspan="4">No hay gastos</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@ -3,7 +3,7 @@ from django.urls import path
|
|||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', views.home, name='home'),
|
path('', views.home, name='home'),
|
||||||
# path('', views.expense_list, name='expense_list'),
|
path('expenses/', views.expense_list, name='expense_list'),
|
||||||
path('new/', views.expense_create, name='expense_create'),
|
path('new/', views.expense_create, name='expense_create'),
|
||||||
path('<int:pk>/edit/', views.expense_edit, name='expense_edit'),
|
path('<int:pk>/edit/', views.expense_edit, name='expense_edit'),
|
||||||
path('<int:pk>/delete/', views.expense_delete, name='expense_delete'),
|
path('<int:pk>/delete/', views.expense_delete, name='expense_delete'),
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
from datetime import date
|
from datetime import date
|
||||||
from .models import Expense
|
from .models import Category, Expense
|
||||||
from .forms import ExpenseForm
|
from .forms import ExpenseForm
|
||||||
# from dateutli.relativedelta import relativedelta
|
# from dateutli.relativedelta import relativedelta
|
||||||
|
|
||||||
@ -98,19 +98,46 @@ def home(request):
|
|||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def expense_list(request):
|
def expense_list(request):
|
||||||
expenses = Expense.objects.filter(owner=request.user)
|
expenses = (
|
||||||
|
Expense.objects
|
||||||
|
.filter(owner=request.user)
|
||||||
|
.select_related('category')
|
||||||
|
.order_by('-date')
|
||||||
|
)
|
||||||
|
|
||||||
|
# Filters
|
||||||
|
year = request.GET.get('year')
|
||||||
|
month = request.GET.get('month')
|
||||||
|
category = request.GET.get('category')
|
||||||
|
|
||||||
|
if year:
|
||||||
|
expenses = expenses.filter(date__year=year)
|
||||||
|
|
||||||
|
if month:
|
||||||
|
expenses = expenses.filter(date__month=month)
|
||||||
|
|
||||||
|
if category:
|
||||||
|
expenses = expenses.filter(category_id=category)
|
||||||
|
|
||||||
|
categories = Category.objects.filter(owner=request.user).order_by('name')
|
||||||
|
|
||||||
return render (
|
return render (
|
||||||
request,
|
request,
|
||||||
'expenses/expense_list.html',
|
'expenses/expense_list.html',
|
||||||
{'expenses': expenses},
|
{
|
||||||
|
'expenses': expenses,
|
||||||
|
'categories': categories,
|
||||||
|
'selected_year': year,
|
||||||
|
'selected_month': month,
|
||||||
|
'selected_category': category,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def expense_create(request):
|
def expense_create(request):
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
form = ExpenseForm(request.POST or None, user=request.user)
|
form = ExpenseForm(request.POST, user=request.user)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
expense = form.save(commit=False)
|
expense = form.save(commit=False)
|
||||||
expense.owner = request.user
|
expense.owner = request.user
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user