File diff ef3dd503d868 → 789d0c8c843a
conservancy/contacts/views.py
Show inline comments
 
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})