Răsfoiți Sursa

Personalizao el campo buscar

Celestino Rey 1 an în urmă
părinte
comite
330c536015
3 a modificat fișierele cu 28 adăugiri și 5 ștergeri
  1. 5 3
      finanzas/forms.py
  2. 19 0
      finanzas/views.py
  3. 4 2
      templates/_navigation.html

+ 5 - 3
finanzas/forms.py

@@ -40,9 +40,11 @@ class MovimientoForm(forms.ModelForm):
             raise forms.ValidationError("Introduzca un número válido. Puede usar coma o punto como separador decimal.")
 
 class FiltroForm(forms.Form):
-    fecha_inicio = forms.DateField(required=False, widget=forms.DateInput(attrs={'type': 'date'}))
-    fecha_fin = forms.DateField(required=False, widget=forms.DateInput(attrs={'type': 'date'}))
-    cuenta = forms.ModelChoiceField(queryset=Cuenta.objects.all(), required=False)
+#    fecha_inicio = forms.DateField(required=False, widget=forms.DateInput(attrs={'type': 'date'}))
+#    fecha_fin = forms.DateField(required=False, widget=forms.DateInput(attrs={'type': 'date'}))
+#    cuenta = forms.ModelChoiceField(queryset=Cuenta.objects.all(), required=False)
+    buscar = forms.CharField(required=False, label='',
+                             widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Buscar...'}))
 
 
 class CuentaForm(forms.ModelForm):

+ 19 - 0
finanzas/views.py

@@ -2,6 +2,7 @@ from django.shortcuts import render, redirect,  get_object_or_404
 from decimal import Decimal, InvalidOperation
 import logging
 import re
+from django.db import models as db_models
 
 from accounts import models
 from .models import Movimiento, Cuenta, MovimientoFrecuente
@@ -20,6 +21,23 @@ def dashboard(request):
 
     frecuentes = MovimientoFrecuente.objects.filter(usuario=request.user)
 
+    form = FiltroForm(request.GET or None)
+    
+    if form.is_valid():
+#        if form.cleaned_data['fecha_inicio']:
+#            movimientos = movimientos.filter(fecha__gte=form.cleaned_data['fecha_inicio'])
+#        if form.cleaned_data['fecha_fin']:
+#            movimientos = movimientos.filter(fecha__lte=form.cleaned_data['fecha_fin'])
+#        if form.cleaned_data['cuenta']:
+#            cuenta = form.cleaned_data['cuenta']
+#            movimientos = movimientos.filter(models.Q(cuenta_origen=cuenta) | models.Q(cuenta_destino=cuenta))
+        busqueda = form.cleaned_data.get('buscar')
+        if busqueda:
+            movimientos = movimientos.filter(
+                db_models.Q(descripcion__icontains=busqueda) |
+                db_models.Q(cuenta_origen__nombre__icontains=busqueda) |
+                db_models.Q(cuenta_destino__nombre__icontains=busqueda)
+            )
     logger.warning(f"Frecuentes: {frecuentes}")
     logger.warning(f"Monto: {frecuentes[0].monto}")
     # Aplicar filtros si se han proporcionado
@@ -27,6 +45,7 @@ def dashboard(request):
     return render(request, 'dashboard.html', {
         'movimientos': movimientos,
         'user': request.user,
+        'form': form,
         'favoritas': favoritas,
         'frecuentes': frecuentes,
     })

+ 4 - 2
templates/_navigation.html

@@ -4,9 +4,11 @@
         <div>
            <i id="menu-btn" class="bi bi-list""></i>               
         </div>
+
         <div class="search">
-           <i class="bi bi-search"></i>              
-            <input type="text" placeholder="Buscar...">
+            <form method="get">
+                {{ form.as_p }}
+            </form>
         </div>
     </div>