MEJORA: Fix N+1 query problems in project_list and export_expenses_csv

This commit is contained in:
Nachou-u
2026-09-09 08:26:36 -03:00
parent 1417cff823
commit c229da1436
2 changed files with 8 additions and 3 deletions
+2
View File
@@ -83,6 +83,8 @@ class Project(CatalogModel):
@property @property
def total_expenses_clp(self): def total_expenses_clp(self):
if hasattr(self, 'total_expenses'):
return self.total_expenses or Decimal('0.00')
return self.expenses.aggregate(total=models.Sum('amount_clp'))['total'] or Decimal('0.00') return self.expenses.aggregate(total=models.Sum('amount_clp'))['total'] or Decimal('0.00')
@property @property
+6 -3
View File
@@ -1,5 +1,8 @@
import csv import csv
import io import io
import logging
logger = logging.getLogger(__name__)
from decimal import Decimal from decimal import Decimal
from django.views.generic import ListView, CreateView, UpdateView, DeleteView from django.views.generic import ListView, CreateView, UpdateView, DeleteView
from django.contrib.auth.mixins import LoginRequiredMixin from django.contrib.auth.mixins import LoginRequiredMixin
@@ -353,7 +356,7 @@ def export_expenses_csv(request):
'Responsable', 'Detalle', 'Region', 'Comuna', 'Proveedor' 'Responsable', 'Detalle', 'Region', 'Comuna', 'Proveedor'
]) ])
expenses = Expense.objects.all().select_related('project', 'responsible_person') expenses = Expense.objects.all().select_related('project', 'responsible_person', 'vendor')
for exp in expenses: for exp in expenses:
writer.writerow([ writer.writerow([
exp.id, exp.id,
@@ -870,8 +873,8 @@ def delete_document(request, pk):
try: try:
if os.path.exists(doc.file.path): if os.path.exists(doc.file.path):
os.remove(doc.file.path) os.remove(doc.file.path)
except Exception: except Exception as e:
pass logger.error(f"Error removing file: {e}", exc_info=True)
# Delete object # Delete object
doc.delete() doc.delete()