celery fixes
[wolnelektury.git] / src / club / models.py
index 4f3a8f6..ba4466b 100644 (file)
@@ -14,6 +14,7 @@ from django import template
 from django.utils.timezone import now
 from django.utils.translation import ugettext_lazy as _, ungettext, ugettext, get_language
 from django_countries.fields import CountryField
+from pytz import utc
 from catalogue.utils import get_random_hash
 from messaging.states import Level
 from reporting.utils import render_to_pdf
@@ -26,9 +27,7 @@ from . import utils
 class Club(models.Model):
     min_amount = models.IntegerField(_('minimum amount'))
     min_for_year = models.IntegerField(_('minimum amount for year'))
-    single_amounts = models.CharField(_('proposed amounts for single payment'), max_length=255)
     default_single_amount = models.IntegerField(_('default single amount'))
-    monthly_amounts = models.CharField(_('proposed amounts for monthly payments'), max_length=255)
     default_monthly_amount = models.IntegerField(_('default monthly amount'))
 
     class Meta:
@@ -37,12 +36,23 @@ class Club(models.Model):
     
     def __str__(self):
         return 'Klub'
-    
-    def proposed_single_amounts(self):
-        return [int(x) for x in self.single_amounts.split(',')]
 
-    def proposed_monthly_amounts(self):
-        return [int(x) for x in self.monthly_amounts.split(',')]
+
+class SingleAmount(models.Model):
+    club = models.ForeignKey(Club, models.CASCADE)
+    amount = models.IntegerField()
+    description = models.TextField(blank=True)
+
+    class Meta:
+        ordering = ['amount']
+
+class MonthlyAmount(models.Model):
+    club = models.ForeignKey(Club, models.CASCADE)
+    amount = models.IntegerField()
+    description = models.TextField(blank=True)
+
+    class Meta:
+        ordering = ['amount']
 
 
 class Consent(models.Model):
@@ -116,6 +126,13 @@ class Schedule(models.Model):
     def get_payment_method(self):
         return [m for m in methods if m.slug == self.method][0]
 
+    def get_payment_methods(self):
+        for method in methods:
+            if (self.monthly or self.yearly) and method.is_recurring:
+                yield method
+            elif not (self.monthly or self.yearly) and method.is_onetime:
+                yield method
+
     def is_expired(self):
         return self.expires_at is not None and self.expires_at <= now()
 
@@ -224,7 +241,7 @@ class Membership(models.Model):
 
         Contact = apps.get_model('messaging', 'Contact')
         if self.manual:
-            Contact.update(email, Level.MANUAL_MEMBER, self.updated_at)
+            Contact.update(email, Level.MANUAL_MEMBER, datetime.combine(self.updated_at, datetime.min.time(), utc))
         else:
             Contact.reset(email)