Browse Source

Make pdf methods a bit more generic + get rid of old invoice_pdf_filename

Alexandre Aubin 6 years ago
parent
commit
9feb06e50d
2 changed files with 7 additions and 10 deletions
  1. 1 1
      coin/billing/migrations/0001_initial.py
  2. 6 9
      coin/billing/models.py

+ 1 - 1
coin/billing/migrations/0001_initial.py

@@ -23,7 +23,7 @@ class Migration(migrations.Migration):
                 ('status', models.CharField(default='open', max_length=50, verbose_name='statut', choices=[('open', 'A payer'), ('closed', 'Regl\xe9e'), ('trouble', 'Litige')])),
                 ('date', models.DateField(default=datetime.date.today, null=True, verbose_name='date')),
                 ('date_due', models.DateField(default=coin.utils.end_of_month, null=True, verbose_name="date d'\xe9ch\xe9ance de paiement")),
-                ('pdf', models.FileField(storage=coin.utils.private_files_storage, upload_to=coin.billing.models.invoice_pdf_filename, null=True, verbose_name='PDF', blank=True)),
+                ('pdf', models.FileField(storage=coin.utils.private_files_storage, upload_to=coin.billing.models.bill_pdf_filename, null=True, verbose_name='PDF', blank=True)),
             ],
             options={
                 'verbose_name': 'facture',

+ 6 - 9
coin/billing/models.py

@@ -31,14 +31,11 @@ accounting_log = logging.getLogger("coin.billing")
 
 
 def bill_pdf_filename(instance, filename):
-    """Nom et chemin du fichier pdf à stocker pour les factures"""
+    """Nom et chemin du fichier pdf à stocker"""
     member_id = instance.member.id if instance.member else 0
-    return 'invoices/%d_%s_%s.pdf' % (member_id,
-                                      instance.number,
-                                      uuid.uuid4())
-
-def invoice_pdf_filename(instance, filename):
-    return bill_pdf_filename(instance, filename)
+    number = instance.number if hasattr(instance, "number") else instance.pk
+    bill_type = self.__class__.__name__.lower()
+    return '%ss/%d_%s_%s.pdf' % (bill_type, member_id, number, uuid.uuid4())
 
 class Bill(models.Model):
 
@@ -117,8 +114,8 @@ class Bill(models.Model):
         """
         context = {"bill": self}
         context.update(branding(None))
-        pdf_file = render_as_pdf('billing/invoice_pdf.html', context)
-        self.pdf.save('%s.pdf' % self.number, pdf_file)
+        pdf_file = render_as_pdf('billing/{bill_type}_pdf.html'.format(bill_type=self.type.lower()), context)
+        self.pdf.save('%s.pdf' % self.number if hasattr(self, "number") else self.pk, pdf_file)
 
     def pdf_exists(self):
         return (bool(self.pdf)