fix
[wolnelektury.git] / src / club / models.py
index db5fde8..babe6f5 100644 (file)
@@ -51,7 +51,9 @@ class Schedule(models.Model):
     amount = models.DecimalField(_('amount'), max_digits=10, decimal_places=2)
     monthly = models.BooleanField(_('monthly'), default=True)
     yearly = models.BooleanField(_('yearly'), default=False)
-    
+
+    source = models.CharField(_('source'), max_length=255, blank=True)
+
     is_cancelled = models.BooleanField(_('cancelled'), default=False)
     payed_at = models.DateTimeField(_('payed at'), null=True, blank=True)
     started_at = models.DateTimeField(_('started at'), auto_now_add=True)
@@ -261,16 +263,34 @@ class PayUOrder(payu_models.Order):
 
     @classmethod
     def send_receipt(cls, email, year):
+        Contact = apps.get_model('messaging', 'Contact')
         Funding = apps.get_model('funding', 'Funding')
         payments = []
 
+        try:
+            contact = Contact.objects.get(email=email)
+        except Contact.DoesNotExist:
+            funding = Funding.objects.filter(
+                email=email,
+                payed_at__year=year,
+                notifications=True).order_by('payed_at').first()
+            if funding is None:
+                print('no notifications')
+                return
+            optout = funding.wl_optout_url()
+        else:
+            if contact.level == Level.OPT_OUT:
+                print('opt-out')
+                return
+            optout = contact.wl_optout_url()
+
         qs = cls.objects.filter(status='COMPLETED', schedule__email=email, completed_at__year=year).order_by('completed_at')
         for order in qs:
             payments.append({
                 'timestamp': order.completed_at,
                 'amount': order.get_amount(),
             })
-            
+
         fundings = Funding.objects.filter(
             email=email,
             payed_at__year=year
@@ -291,6 +311,7 @@ class PayUOrder(payu_models.Order):
             "next_year": year + 1,
             "total": sum(x['amount'] for x in payments),
             "payments": payments,
+            "optout": optout,
         }
         temp = tempfile.NamedTemporaryFile(prefix='receipt-', suffix='.pdf', delete=False)
         temp.close()