Browse Source

Move Document total agregates from view to model

Thus, create:

- Document.get_total_recuring_costs()
- Document.get_total_recuring_costs

Refacto from those comp
Jocelyn Delalande 7 years ago
parent
commit
5cbeb08ab8
2 changed files with 9 additions and 4 deletions
  1. 7 0
      costs/models.py
  2. 2 4
      costs/views.py

+ 7 - 0
costs/models.py

@@ -5,6 +5,8 @@ from django.conf import settings
 from django.core.exceptions import ValidationError
 from django.core.urlresolvers import reverse
 from django.db import models, transaction
+from django.db.models import Sum
+
 import markdown
 
 
@@ -83,6 +85,11 @@ class Document(models.Model):
 
             return new_doc
 
+    def get_total_recuring_costs(self):
+        return self.cost_set.aggregate(sum=Sum('price'))['sum'] or 0
+
+    def get_total_goods(self):
+        return self.good_set.aggregate(sum=Sum('price'))['sum'] or 0
 
 class AbstractItem(models.Model):
     name = models.CharField('Nom', max_length=130)

+ 2 - 4
costs/views.py

@@ -1,7 +1,6 @@
 from django.contrib.auth.decorators import login_required
 from django.core.urlresolvers import reverse
 from django.shortcuts import render, get_object_or_404
-from django.db.models import Sum
 
 from .models import Document, Service, ServiceUse, CostUse, GoodUse
 
@@ -36,9 +35,8 @@ def detail_document(request, pk):
         request, 'costs/document_detail.html', {
             'document': doc,
             'breadcrumbs': breadcrumbs,
-            'total_recuring_costs': doc.cost_set.aggregate(
-                sum=Sum('price'))['sum'],
-            'total_goods': doc.good_set.aggregate(sum=Sum('price'))['sum'],
+            'total_recuring_costs': doc.get_total_recuring_costs(),
+            'total_goods': doc.get_total_goods()
         })