X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/dbc646e3eb996cb0134b6166be3055dbb642e1ca..4157358510703a54cde8f3b0f9814f2cd1c9f40a:/src/club/models.py diff --git a/src/club/models.py b/src/club/models.py index 4f3a8f632..ba4466b18 100644 --- a/src/club/models.py +++ b/src/club/models.py @@ -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)