Visual improvements 2
This commit is contained in:
parent
a5414341fb
commit
d37d0f95f1
@ -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;
|
||||||
|
}
|
||||||
@ -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 %}
|
||||||
@ -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 %}
|
||||||
|
|||||||
@ -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">
|
||||||
|
|||||||
@ -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 %}
|
||||||
|
|||||||
@ -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 %}
|
||||||
|
|||||||
@ -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 %}
|
||||||
@ -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 %}
|
||||||
|
|||||||
@ -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 %}
|
||||||
@ -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>
|
||||||
|
|||||||
@ -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(
|
||||||
|
|||||||
@ -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()
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user