|
@@ -7,7 +7,7 @@ import uuid
|
|
|
import os
|
|
|
from decimal import Decimal
|
|
|
|
|
|
-from django.db import models
|
|
|
+from django.db import models, transaction
|
|
|
from django.db.models.signals import post_save
|
|
|
from django.dispatch import receiver
|
|
|
|
|
@@ -111,15 +111,16 @@ class Invoice(models.Model):
|
|
|
pdf_file = render_as_pdf('billing/invoice_pdf.html', context)
|
|
|
self.pdf.save('%s.pdf' % self.number, pdf_file)
|
|
|
|
|
|
+ @transaction.atomic
|
|
|
def validate(self):
|
|
|
"""
|
|
|
Switch invoice to validate mode. This set to False the draft field
|
|
|
and generate the pdf
|
|
|
"""
|
|
|
- if not self.pdf_exists():
|
|
|
- self.validated = True
|
|
|
- self.save()
|
|
|
- self.generate_pdf()
|
|
|
+ self.validated = True
|
|
|
+ self.save()
|
|
|
+ self.generate_pdf()
|
|
|
+ assert self.pdf_exists()
|
|
|
|
|
|
def save(self, *args, **kwargs):
|
|
|
self.number = Invoice.objects.get_next_invoice_number(self.date)
|