diff --git a/conservancy/contacts/views.py b/conservancy/contacts/views.py index 95ccfc09340d49cbf7a6e7cd3ffc76a2bdfbc93b..65ea3445d0b0e0d2c9ad8126a6fb202413643d4c 100644 --- a/conservancy/contacts/views.py +++ b/conservancy/contacts/views.py @@ -1,25 +1,31 @@ +import logging + from django.forms import ModelForm +from django.views.decorators.csrf import csrf_exempt from django.shortcuts import render -from .models import ContactEntry - +from .models import Unsubscription -def subscribe(request): - """Mailing list subscription form - """ +logger = logging.getLogger(__name__) - class ContactEntryForm(ModelForm): - class Meta: - model = ContactEntry +class UnsubscribeForm(ModelForm): + class Meta: + model = Unsubscription + fields = ['email'] - ContactEntryForm.base_fields['subscribe_conservancy'].label = 'Receive Software Freedom Conservancy updates' +# Exempt from CSRF protection so that it can be triggered by Gmail's on-click +# unsubscribe. +@csrf_exempt +def unsubscribe(request): if request.method == 'POST': - form = ContactEntryForm(request.POST) + logger.debug('Unsubscribe GET: %s', request.GET) + logger.debug('Unsubscribe POST: %s', request.POST) + form = UnsubscribeForm(request.POST) if form.is_valid(): form.save() - return render(request, 'contacts/subscribe_success.html', {'form': form.cleaned_data}) + logger.info('Unsubscribed %s', form.cleaned_data['email']) + return render(request, 'contacts/unsubscribe_success.html') else: - form = ContactEntryForm() - - return render(request, 'contacts/subscribe.html', {'form': form}) + form = UnsubscribeForm() + return render(request, 'contacts/unsubscribe.html', {'form': form})