repos

blog.bythewood.me-wagtail

mirror archived upstream

Self-hostable blog for developers built on Wagtail and Django, with webpack, Bootstrap, and CodeMirror.

blogbootstrapdjangodockerhandcodedpythonself-hostedwagtailwebpack

817 B · 29 lines · Python Raw History
 1from django import forms
 2
 3from .models import Subscriber
 4
 5
 6class SubscriberForm(forms.ModelForm):
 7    subscribe = forms.BooleanField(required=False)
 8
 9    class Meta:
10        model = Subscriber
11        fields = ['email']
12
13    def clean_email(self):
14        email = self.cleaned_data['email']
15        email = email.lower().strip()
16        return email
17
18    def save(self, commit=True):
19        subscriber = super().save(commit=False)
20        if self.cleaned_data['subscribe'] is True:
21            existing = Subscriber.objects.filter(email=subscriber.email)
22            if existing.exists():
23                subscriber = existing.first()
24            if commit:
25                subscriber.save()
26        else:
27            subscriber = Subscriber.objects.filter(email=subscriber.email).delete()
28        return subscriber