X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/94a4fcc7ab9e1713dc2defc8b35c875fc90f6fa5..818d7c89881b8a864b7465323dfcfa2abaaafb38:/src/club/forms.py diff --git a/src/club/forms.py b/src/club/forms.py index dd088f730..0ee00dc7f 100644 --- a/src/club/forms.py +++ b/src/club/forms.py @@ -1,9 +1,8 @@ -# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later. -# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. +# This file is part of Wolne Lektury, licensed under GNU Affero GPLv3 or later. +# Copyright © Fundacja Wolne Lektury. See NOTICE for more information. # from decimal import Decimal from django import forms -from django.utils.translation import gettext as _ from newsletter.forms import NewsletterForm from . import models, payment_methods from .payu.forms import CardTokenForm @@ -32,9 +31,12 @@ class DonationStep1Form(forms.ModelForm): 'monthly' ] - def __init__(self, *args, **kwargs): + def __init__(self, *args, referer=None, **kwargs): + self.referer = referer super().__init__(*args, **kwargs) club = models.Club.objects.first() + if self.instance.is_custom_amount(): + self.fields['custom_amount'].initial = int(self.instance.amount) if club is not None: self.fields['custom_amount'].widget.attrs['min'] = club.min_amount @@ -49,6 +51,10 @@ class DonationStep1Form(forms.ModelForm): return state + def save(self, *args, **kwargs): + if self.referer is not None: + self.instance.source = self.referer + return super().save(*args, **kwargs) class DonationStep2Form(forms.ModelForm, NewsletterForm): @@ -56,44 +62,35 @@ class DonationStep2Form(forms.ModelForm, NewsletterForm): model = models.Schedule fields = [ 'first_name', 'last_name', - 'email', 'phone', - 'postal', - 'postal_code', 'postal_town', 'postal_country', + 'email', ] widgets = { 'amount': forms.HiddenInput, 'monthly': forms.HiddenInput, } - def __init__(self, referer=None, **kwargs): - self.referer = referer + def __init__(self, **kwargs): super().__init__(**kwargs) - self.fields['first_name'].required = True - self.fields['last_name'].required = True - self.fields['phone'].required = True - self.consent = [] for c in models.Consent.objects.filter(active=True).order_by('order'): key = f'consent{c.id}' - self.fields[key] = forms.BooleanField( - label=c.text, - required=c.required - ) + if not c.required: + self.fields[key] = forms.BooleanField( + label=c.text, + required=c.required + ) self.consent.append(( c, key, (lambda k: lambda: self[k])(key) )) - - def save(self, *args, **kwargs): NewsletterForm.save(self, *args, **kwargs) - self.instance.source = self.referer or '' instance = super().save(*args, **kwargs) consents = [] for consent, key, consent_field in self.consent: - if self.cleaned_data[key]: + if consent.required or self.cleaned_data[key]: instance.consent.add(consent) return instance