Simpler payments and introduce seasonal banner.
[wolnelektury.git] / src / club / forms.py
index df92524..ceda8d5 100644 (file)
@@ -31,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
 
@@ -48,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):
@@ -55,39 +62,30 @@ 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 = []