Visual improvements 2

This commit is contained in:
JKuijperM 2026-02-07 00:42:07 +01:00
parent a5414341fb
commit d37d0f95f1
12 changed files with 83 additions and 30 deletions

View File

@ -4,6 +4,10 @@ body {
background: #f7f7f7; background: #f7f7f7;
} }
a.danger {
color: #b91c1c;
}
.topbar { .topbar {
background: #1f2937; background: #1f2937;
padding: 12px 20px; padding: 12px 20px;
@ -176,3 +180,29 @@ tbody tr:hover {
.btn.secondary { .btn.secondary {
background: #6b7280; background: #6b7280;
} }
.messages {
margin: 1rem 0;
}
.message {
padding: 0.6rem 0.8rem;
border-radius: 6px;
margin-bottom: 0.5rem;
font-size: 0.9rem;
}
.message.success {
background: #e6f4ea;
color: #166534;
}
.message.error {
background: #fee2e2;
color: #991b1b;
}
.message.warning {
background: #fef3c7;
color: #92400e;
}

View File

@ -11,8 +11,8 @@
<form method="post"> <form method="post">
{% csrf_token %} {% csrf_token %}
<button type="submit">Sí, eliminar</button> <button class="btn">Sí, eliminar</button>
<a href="{% url 'account_list' %}">Cancelar</a> <a class="btn secondary" href="{% url 'account_list' %}">Cancelar</a>
</form> </form>
{% endblock %} {% endblock %}

View File

@ -25,7 +25,7 @@
<td>{{ account.active }}</td> <td>{{ account.active }}</td>
<td class="table-actions"> <td class="table-actions">
<a href="{% url 'account_edit' account.id %}">Editar</a> <a href="{% url 'account_edit' account.id %}">Editar</a>
<a href="{% url 'account_delete' account.id %}">Eliminar</a> <a href="{% url 'account_delete' account.id %}" class="danger">Eliminar</a>
</td> </td>
</tr> </tr>
{% empty %} {% empty %}

View File

@ -33,6 +33,15 @@
</nav> </nav>
</header> </header>
{% if messages %}
<div class="messages">
{% for message in messages %}
<div class="message {{ message.tags }}">
{{ message }}
</div>
{% endfor %}
</div>
{% endif %}
{% endif %} {% endif %}
<main class="content"> <main class="content">

View File

@ -1,24 +1,21 @@
{% extends "expenses/base.html" %} {% extends "expenses/base.html" %}
{% block title %}Borrar gasto{% endblock %} {% block title %}Eliminar gasto{% endblock %}
{% block content %} {% block content %}
<h1>Borrar gasto</h1> <h1>Eliminar gasto</h1>
<p> <p>
¿Seguro que quieres borrar este gasto? ¿Seguro que quieres eliminar el gasto de
<strong>{{ expense.amount }}€</strong>
del {{ expense.date }} perteneciente a
<strong>{{ expense.account }}</strong>?
</p> </p>
<ul>
<li>Fecha: {{ expense.date }}</li>
<li>Importe: {{ expense.amount }}</li>
<li>Categoría: {{ expense.category.name }}</li>
</ul>
<form method="post"> <form method="post">
{% csrf_token %} {% csrf_token %}
<button type="submit">Sí, borrar</button> <button class="btn">Sí, eliminar</button>
<a class="btn secondary" href="{% url 'expense_list' %}">Cancelar</a>
</form> </form>
<a href="{% url 'expense_list' %}">Cancelar</a>
{% endblock %} {% endblock %}

View File

@ -111,7 +111,7 @@
</td> </td>
<td class="table-actions"> <td class="table-actions">
<a href="{% url 'expense_edit' expense.id %}">Editar</a> <a href="{% url 'expense_edit' expense.id %}">Editar</a>
<a href="{% url 'expense_delete' expense.id %}">Eliminar</a> <a href="{% url 'expense_delete' expense.id %}" class="danger">Eliminar</a>
</td> </td>
</tr> </tr>
{% empty %} {% empty %}

View File

@ -1,23 +1,20 @@
{% extends "expenses/base.html" %} {% extends "expenses/base.html" %}
{% block title %}Borrar ingreso{% endblock %} {% block title %}Eliminar ingreso{% endblock %}
{% block content %} {% block content %}
<h1>Borrar ingreso</h1> <h1>Eliminar ingreso</h1>
<p> <p>
¿Seguro que quieres borrar este ingreso? ¿Seguro que quieres eliminar el ingreso de
<strong>{{ income.amount }}€</strong>
del {{ expense.date }} perteneciente a
<strong>{{ income.account }}</strong>?
</p> </p>
<ul>
<li>Fecha: {{ income.date }}</li>
<li>Importe: {{ income.amount }}</li>
<li>Categoría: {{ income.category.name }}</li>
</ul>
<form method="post"> <form method="post">
{% csrf_token %} {% csrf_token %}
<button type="submit">Sí, borrar</button> <button class="btn">Sí, eliminar</button>
<a class="btn secondary" href="{% url 'income_list' %}">Cancelar</a>
</form> </form>
<a class="btn secondary" href="{% url 'income_list' %}">Cancelar</a>
{% endblock %} {% endblock %}

View File

@ -24,7 +24,7 @@
<td>{{ income.date }}</td> <td>{{ income.date }}</td>
<td class="table-actions"> <td class="table-actions">
<a href="{% url 'income_edit' income.id %}">Editar</a> <a href="{% url 'income_edit' income.id %}">Editar</a>
<a href="{% url 'income_delete' income.id %}">Eliminar</a> <a href="{% url 'income_delete' income.id %}" class="danger">Eliminar</a>
</td> </td>
</tr> </tr>
{% empty %} {% empty %}

View File

@ -3,10 +3,15 @@
{% block content %} {% block content %}
<h1>Eliminar etiqueta</h1> <h1>Eliminar etiqueta</h1>
<p>
¿Seguro que quieres eliminar la etiqueta
<strong>{{ tag.name }}€</strong>?
</p>
<form method="post"> <form method="post">
{% csrf_token %} {% csrf_token %}
<button type="submit">Eliminar</button> <button class="btn">Eliminar</button>
<a class="btn secondary" href="{% url 'tag_list' %}">Cancelar</a>
</form> </form>
<a class="btn secondary" href="{% url 'tag_list' %}">Cancelar</a>
{% endblock %} {% endblock %}

View File

@ -10,7 +10,7 @@
<li class="table-actions"> <li class="table-actions">
{{ tag.name }} {{ tag.name }}
<a href="{% url 'tag_edit' tag.id %}">Editar</a> <a href="{% url 'tag_edit' tag.id %}">Editar</a>
<a href="{% url 'tag_delete' tag.id %}">Eliminar</a> <a href="{% url 'tag_delete' tag.id %}" class="danger">Eliminar</a>
</li> </li>
{% empty %} {% empty %}
<li>No hay etiquetas</li> <li>No hay etiquetas</li>

View File

@ -1,5 +1,6 @@
from datetime import date from datetime import date
from operator import truediv from operator import truediv
from django.contrib import messages
from .models import Account, Category, Expense, Tag, Income from .models import Account, Category, Expense, Tag, Income
from .forms import ExpenseForm, IncomeForm, TagForm, AccountForm from .forms import ExpenseForm, IncomeForm, TagForm, AccountForm
# from dateutli.relativedelta import relativedelta # from dateutli.relativedelta import relativedelta
@ -211,6 +212,8 @@ def expense_create(request):
expense.owner = request.user expense.owner = request.user
expense.save() expense.save()
form.save_m2m() form.save_m2m()
messages.success(request, 'Gasto creado correctamente.')
return redirect('expense_list') return redirect('expense_list')
else: else:
form = ExpenseForm(user=request.user) form = ExpenseForm(user=request.user)
@ -233,6 +236,7 @@ def expense_edit(request, pk):
form = ExpenseForm(request.POST or None, instance=expense, user=request.user) form = ExpenseForm(request.POST or None, instance=expense, user=request.user)
if form.is_valid(): if form.is_valid():
expense = form.save() expense = form.save()
messages.success(request, 'Gasto actualizado')
return redirect('expense_list') return redirect('expense_list')
else: else:
form = ExpenseForm(instance=expense, user=request.user) form = ExpenseForm(instance=expense, user=request.user)
@ -254,6 +258,7 @@ def expense_delete(request, pk):
if request.method == 'POST': if request.method == 'POST':
expense.delete() expense.delete()
messages.success(request, 'Gasto eliminado correctamente.')
return redirect('expense_list') return redirect('expense_list')
return render( return render(
@ -547,6 +552,7 @@ def tag_create(request):
tag = form.save(commit=False) tag = form.save(commit=False)
tag.owner = request.user tag.owner = request.user
tag.save() tag.save()
messages.success(request, 'Etiqueta creada correctamente.')
return redirect('tag_list') return redirect('tag_list')
else: else:
form = TagForm() form = TagForm()
@ -570,6 +576,7 @@ def tag_edit(request, pk):
form = TagForm(request.POST, instance=tag) form = TagForm(request.POST, instance=tag)
if form.is_valid(): if form.is_valid():
form.save() form.save()
messages.success(request, 'Etiqueta actualizada.')
return redirect('tag_list') return redirect('tag_list')
else: else:
form = TagForm(instance=tag) form = TagForm(instance=tag)
@ -591,6 +598,7 @@ def tag_delete(request, pk):
if request.method == 'POST': if request.method == 'POST':
tag.delete() tag.delete()
messages.success(request, 'Etiqueta eliminada.')
return redirect('tag_list') return redirect('tag_list')
return render( return render(
@ -618,6 +626,7 @@ def account_create(request):
account = form.save(commit=False) account = form.save(commit=False)
account.owner = request.user account.owner = request.user
account.save() account.save()
messages.success(request, 'Cuenta creada correctamente.')
return redirect('account_list') return redirect('account_list')
else: else:
form = AccountForm() form = AccountForm()
@ -640,6 +649,7 @@ def account_edit(request, pk):
form = AccountForm(request.POST, instance=account) form = AccountForm(request.POST, instance=account)
if form.is_valid(): if form.is_valid():
form.save() form.save()
messages.success(request, 'Cuenta actualizada.')
return redirect('account_list') return redirect('account_list')
else: else:
form = AccountForm(instance=account) form = AccountForm(instance=account)
@ -657,6 +667,7 @@ def account_delete(request, pk):
if request.method == 'POST': if request.method == 'POST':
account.active = False account.active = False
account.save() account.save()
messages.success(request, 'Cuenta eliminada.')
return redirect('account_list') return redirect('account_list')
return render( return render(
@ -673,6 +684,7 @@ def income_create(request):
income = form.save(commit=False) income = form.save(commit=False)
income.owner = request.user income.owner = request.user
income.save() income.save()
messages.success(request, 'Ingreso creado correctamente.')
return redirect('income_list') return redirect('income_list')
else: else:
form = IncomeForm(user=request.user) form = IncomeForm(user=request.user)
@ -705,6 +717,7 @@ def income_edit(request, pk):
form = IncomeForm(request.POST, instance=income, user=request.user) form = IncomeForm(request.POST, instance=income, user=request.user)
if form.is_valid(): if form.is_valid():
form.save() form.save()
messages.success(request, 'Ingreso actualizado.')
return redirect('income_list') return redirect('income_list')
else: else:
form = IncomeForm(instance=income, user=request.user) form = IncomeForm(instance=income, user=request.user)
@ -721,6 +734,7 @@ def income_delete(request, pk):
if request.method == 'POST': if request.method == 'POST':
income.delete() income.delete()
messages.success(request, 'Ingreso eliminado.')
return redirect('income_list') return redirect('income_list')
return render( return render(

View File

@ -13,6 +13,7 @@ https://docs.djangoproject.com/en/5.2/ref/settings/
import os import os
from pathlib import Path from pathlib import Path
from dotenv import load_dotenv from dotenv import load_dotenv
from django.contrib.messages import constants as messages
load_dotenv() load_dotenv()