MEJORA: Fix N+1 query problems in project_list and export_expenses_csv
This commit is contained in:
@@ -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
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user