diff --git a/expenses_manager/expenses/templates/expenses/income_confirm_delete.html b/expenses_manager/expenses/templates/expenses/income_confirm_delete.html
new file mode 100644
index 0000000..b9050d1
--- /dev/null
+++ b/expenses_manager/expenses/templates/expenses/income_confirm_delete.html
@@ -0,0 +1,27 @@
+
+
+
+ Borrar ingreso
+
+
+
+ Borrar ingreso
+
+
+ ¿Seguro que quieres borrar este ingreso?
+
+
+
+ - Fecha: {{ income.date }}
+ - Importe: {{ income.amount }}
+ - Categoría: {{ income.category.name }}
+
+
+
+
+ Cancelar
+
+
\ No newline at end of file
diff --git a/expenses_manager/expenses/templates/expenses/income_form.html b/expenses_manager/expenses/templates/expenses/income_form.html
new file mode 100644
index 0000000..b19fe74
--- /dev/null
+++ b/expenses_manager/expenses/templates/expenses/income_form.html
@@ -0,0 +1,36 @@
+
+
+
+
+ {% if form.instance.pk %}
+ Editar ingreso
+ {% else %}
+ Nuevo ingreso
+ {% endif %}
+
+
+
+
+
+ {% if form.instance.pk %}
+ Editar ingreso
+ {% else %}
+ Nuevo ingreso
+ {% endif %}
+
+
+
+
+ Volver
+
+
\ No newline at end of file
diff --git a/expenses_manager/expenses/templates/expenses/income_list.html b/expenses_manager/expenses/templates/expenses/income_list.html
new file mode 100644
index 0000000..b1b121f
--- /dev/null
+++ b/expenses_manager/expenses/templates/expenses/income_list.html
@@ -0,0 +1,44 @@
+{% load static %}
+
+
+
+ Ingresos
+
+
+
+ Mis ingresos
+
+ ➕ Nuevo ingreso
+
+
+
+
+ | Nombre |
+ Cuenta |
+ Cantidad |
+ Fecha ingreso |
+ |
+
+
+
+ {% for income in incomes %}
+
+ | {{ income.name }} |
+ {{ income.account }} |
+ {{ income.amount|floatformat:2 }} |
+ {{ income.date }} |
+
+ Editar
+ Eliminar
+ |
+
+ {% empty %}
+
+ | No hay ingresos |
+
+ {% endfor %}
+
+
+
+
+
\ No newline at end of file
diff --git a/expenses_manager/expenses/urls.py b/expenses_manager/expenses/urls.py
index 26ded12..cc0a858 100644
--- a/expenses_manager/expenses/urls.py
+++ b/expenses_manager/expenses/urls.py
@@ -16,4 +16,8 @@ urlpatterns = [
path('accounts/new/', views.account_create, name='account_create'),
path('accounts//edit/', views.account_edit, name='account_edit'),
path('accounts//delete/', views.account_delete, name='account_delete'),
+ path('incomes/', views.income_list, name='income_list'),
+ path('incomes/new/', views.income_create, name='income_create'),
+ path('incomes//edit/', views.income_edit, name='income_edit'),
+ path('incomes//delete/', views.income_delete, name='income_delete'),
]
\ No newline at end of file
diff --git a/expenses_manager/expenses/views.py b/expenses_manager/expenses/views.py
index fedb97d..fb04f49 100644
--- a/expenses_manager/expenses/views.py
+++ b/expenses_manager/expenses/views.py
@@ -1,6 +1,6 @@
from datetime import date
from operator import truediv
-from .models import Account, Category, Expense, Tag
+from .models import Account, Category, Expense, Tag, Income
from .forms import ExpenseForm, IncomeForm, TagForm, AccountForm
# from dateutli.relativedelta import relativedelta
@@ -654,7 +654,7 @@ def income_create(request):
income = form.save(commit=False)
income.owner = request.user
income.save()
- return redirect('home')
+ return redirect('income_list')
else:
form = IncomeForm(user=request.user)
@@ -664,5 +664,49 @@ def income_create(request):
{'form': form}
)
+@login_required
+def income_list(request):
+ incomes = Income.objects.filter(owner=request.user)
+
+ return render(
+ request,
+ 'expenses/income_list.html',
+ {'incomes': incomes}
+ )
+@login_required
+def income_edit(request, pk):
+ income = get_object_or_404(
+ Income,
+ pk=pk,
+ owner=request.user
+ )
+
+ if request.method == 'POST':
+ form = IncomeForm(request.POST, instance=income, user=request.user)
+ if form.is_valid():
+ form.save()
+ return redirect('income_list')
+ else:
+ form = IncomeForm(instance=income, user=request.user)
+
+ return render(
+ request,
+ 'expenses/income_form.html',
+ {'form': form}
+ )
+
+@login_required
+def income_delete(request, pk):
+ income = get_object_or_404(Income, pk=pk, owner=request.user)
+
+ if request.method == 'POST':
+ income.delete()
+ return redirect('income_list')
+
+ return render(
+ request,
+ 'expenses/income_confirm_delete.html',
+ {'income':income}
+ )