Simpler payments and introduce seasonal banner.
[wolnelektury.git] / src / club / forms.py
index b75877d..ceda8d5 100644 (file)
@@ -35,6 +35,8 @@ class DonationStep1Form(forms.ModelForm):
         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
 
@@ -50,7 +52,8 @@ class DonationStep1Form(forms.ModelForm):
         return state
 
     def save(self, *args, **kwargs):
-        self.instance.source = self.referer
+        if self.referer is not None:
+            self.instance.source = self.referer
         return super().save(*args, **kwargs)
 
 
@@ -59,9 +62,7 @@ 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,
@@ -71,16 +72,14 @@ class DonationStep2Form(forms.ModelForm, NewsletterForm):
     def __init__(self, **kwargs):
         super().__init__(**kwargs)
 
-        self.fields['first_name'].required = True
-        self.fields['last_name'].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)
             ))