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 })