def unsubscribe(request, email=None): if request.method == 'POST': form = UnsubscribeForm(request.POST) if form.is_valid(): email = form.cleaned_data.pop('email') try: subscriber = Subscriber.objects.get(email=email) try: v = Validation.objects.get(email=email) except Validation.DoesNotExist: v = Validation(email=email) v.action='unsubscribe' v.save() validate_path = reverse('wbc.news.views.validate',args=['.']).strip('.') send_mail(email, 'news/mail/unsubscribe.html', { 'validate_link': settings.SITE_URL + validate_path + v.code }) except Subscriber.DoesNotExist: pass # don't tell the user return render(request,'news/unsubscribe.html', {'success': True}) else: form = UnsubscribeForm(initial={'email': email}) return render(request,'news/unsubscribe.html', {'form': form})
def subscribe(request): entities = District.objects.all().values() unsubscribe_path = reverse( 'wbc.news.views.unsubscribe', args=['.']).strip('.') validate_path = reverse('wbc.news.views.validate', args=['.']).strip('.') if request.method == 'POST': form = SubscribeForm(request.POST, entities=entities) if form.is_valid(): email = form.cleaned_data.pop('email') entitiesJson = dumps(form.cleaned_data) try: v = Validation.objects.get(email=email) except Validation.DoesNotExist: v = Validation(email=email) v.entities = entitiesJson v.action = 'subscribe' v.save() send_mail(email, 'news/mail/subscribe.html', { 'unsubscribe_link': settings.SITE_URL + unsubscribe_path + email, 'validate_link': settings.SITE_URL + validate_path + v.code }) return render(request, 'news/subscribe.html', { 'success': True, 'unsubscribe_link': settings.SITE_URL + unsubscribe_path + email }) else: form = SubscribeForm(entities=entities) return render(request, 'news/subscribe.html', { 'form': form, 'unsubscribe_link': settings.SITE_URL + unsubscribe_path, 'entities': entities })