Compare commits

..

No commits in common. "956841bb02ab17b8861b723a39871ed38a0dfff9" and "8d42cc13f3fbf2782ab285cecee2f4773494db59" have entirely different histories.

7 changed files with 34 additions and 60 deletions

View File

@ -62,16 +62,17 @@ class IncomeForm(forms.ModelForm):
) )
class FuelEntryForm(forms.ModelForm): class FuelEntryForm(forms.Form):
odometer = forms.DecimalField(label="Kilómetros actuales") # Expense fields
liters = forms.DecimalField(max_digits=8, decimal_places=2, label="Litros") date = forms.DateField(
widget=forms.DateInput(format="%Y-%m-%d", attrs={"type": "date"})
class Meta: )
model = Expense amount = forms.DecimalField(max_digits=10, decimal_places=2)
fields = ["date", "amount", "account"] account = forms.ModelChoiceField(queryset=None)
widgets = {
"date": forms.DateInput(format="%Y-%m-%d", attrs={"type":"date"}), # Specifics fuel fields
} odometer = forms.DecimalField(label="Current kilometers")
liters = forms.DecimalField(max_digits=8, decimal_places=2)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
user = kwargs.pop("user") user = kwargs.pop("user")
@ -79,11 +80,6 @@ class FuelEntryForm(forms.ModelForm):
if user: if user:
self.fields["account"].queryset = user.accounts.filter(active=True) self.fields["account"].queryset = user.accounts.filter(active=True)
if self.instance.pk and hasattr(self.instance, "fuel_data"):
fuel = self.instance.fuel_data
self.fields["odometer"].initial = fuel.odometer
self.fields["liters"].initial = fuel.liters
class CategoryForm(forms.ModelForm): class CategoryForm(forms.ModelForm):

View File

@ -531,9 +531,4 @@ tbody tr:hover {
} }
.progress-fill.danger { .progress-fill.danger {
background-color: #b71c1c; background-color: #b71c1c;
}
.auth-help {
margin-top: 16px;
font-size: 0.9em;
} }

View File

@ -10,8 +10,4 @@
<button type="submit">Entrar</button> <button type="submit">Entrar</button>
</form> </form>
<p class="auth-help">
¿Olvidaste la contraseña? <a href="{% url 'password_help' %}">Más información</a>
</p>
{% endblock %} {% endblock %}

View File

@ -1,17 +0,0 @@
{% extends "expenses/base_auth.html" %}
{% block content %}
<h2>Recuperar contraseña</h2>
<p>
Esta aplicación actualmente no envía correos de recuperación automáticos.
Si has olvidado tu contraseña, ponte en contacto con el administrados
para que te asigne una nueva.
</p>
<p>
<a href="{% url 'login' %}">Volver al inicio de sesión.</a>
</p>
{% endblock %}

View File

@ -1,6 +1,5 @@
from . import views from . import views
from django.urls import path from django.urls import path
from django.views.generic import TemplateView
urlpatterns = [ urlpatterns = [
path('', views.home, name='home'), path('', views.home, name='home'),
@ -33,5 +32,4 @@ urlpatterns = [
path('goals/new/', views.goal_create, name='goal_create'), path('goals/new/', views.goal_create, name='goal_create'),
path('goals/<int:pk>/edit/', views.goal_edit, name='goal_edit'), path('goals/<int:pk>/edit/', views.goal_edit, name='goal_edit'),
path('goals/<int:pk>/delete/', views.goal_delete, name='goal_delete'), path('goals/<int:pk>/delete/', views.goal_delete, name='goal_delete'),
path('password_help', TemplateView.as_view(template_name="registration/password_help.html"), name="password_help"),
] ]

View File

@ -623,15 +623,6 @@ def account_edit(request, pk):
@login_required @login_required
def account_delete(request, pk): def account_delete(request, pk):
"""Delete an account via *soft-delete* (sets active=False).
Unlike expense_delete, tag_delete or income_delete, which delete the
record for real, accounts are never physically removed: they are
deactivated. Historical expenses and incomes keep their ForeignKey to
the account, so balances and charts for past periods remain correct.
An inactive account disappears from forms (querysets filtered by
active=True) but stays visible and dimmed in the account list.
"""
account = get_object_or_404(Account, pk=pk, owner=request.user) account = get_object_or_404(Account, pk=pk, owner=request.user)
if request.method == "POST": if request.method == "POST":
@ -721,12 +712,14 @@ def fuel_create(request):
owner=request.user, owner=request.user,
defaults={"name": "Gasolina"}, defaults={"name": "Gasolina"},
) )
expense = Expense.objects.create(
expense = form.save(commit=False) owner=request.user,
expense.owner = request.user date=form.cleaned_data["date"],
expense.category = category amount=form.cleaned_data["amount"],
expense.description = "Repostaje" account=form.cleaned_data["account"],
expense.save() category=category,
description="Repostaje",
)
FuelEntry.objects.create( FuelEntry.objects.create(
expense=expense, expense=expense,
@ -818,7 +811,9 @@ def fuel_edit(request, pk):
if form.is_valid(): if form.is_valid():
# Update expense # Update expense
expense.date = form.save(commit=False) expense.date = form.cleaned_data["date"]
expense.amount = form.cleaned_data["amount"]
expense.account = form.cleaned_data["account"]
expense.description = "Repostaje" expense.description = "Repostaje"
expense.save() expense.save()
@ -829,7 +824,18 @@ def fuel_edit(request, pk):
return _redirect_back(request, "expense_list") return _redirect_back(request, "expense_list")
else: else:
form = FuelEntryForm(instance=expense, user=request.user) fuel = expense.fuel_data
# Initialize manually
form = FuelEntryForm(
initial={
"date": expense.date,
"amount": expense.amount,
"account": expense.account,
"odometer": fuel.odometer,
"liters": fuel.liters,
},
user=request.user,
)
next_url = request.POST.get("next") or request.GET.get("next", "") next_url = request.POST.get("next") or request.GET.get("next", "")

Binary file not shown.