Added unsubscribe ability

This commit is contained in:
2018-01-14 17:15:28 -05:00
parent 667a470f41
commit c70e07e5fc
5 changed files with 39 additions and 6 deletions

View File

@ -19,7 +19,7 @@ class Command(BaseCommand):
print('Found %s subscribers' % len(subscribers))
for newsletter in newsletters:
print('Sending newsletter: "%s"' % newsletter.subject)
mail.send_mail(newsletter.subject, strip_tags(newsletter.body), settings.EMAIL_HOST_USER, subscribers, html_message=url_fix_render_to_string('email.html', {'content': newsletter.body}))
mail.send_mail(newsletter.subject, strip_tags(newsletter.body), settings.EMAIL_HOST_USER, subscribers, html_message=url_fix_render_to_string('email.html', {'content': newsletter.body, 'unsubscribe': True}))
newsletter.sent = True
newsletter.save()
print('Complete!')

View File

@ -0,0 +1,25 @@
{% extends 'base.html' %}
{% block body %}
<div class="container-fluid bg-dark-primary">
<div class="container py-3">
<div class="row">
<div class="col-12 col-md-8 mx-auto">
<h3 class="text-white">Unsubscribe From Newsletters</h3>
<form method="post">
{% csrf_token %}
<div class="input-group pt-2">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-envelope-o"></i></span>
</div>
<input name="email" class="form-control" type="email" placeholder="Email">
<div class="input-group-append">
<button class="btn btn-danger" type="submit">Unsubscribe</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@ -1,7 +1,5 @@
import json
from django.db.models import Q
from django.shortcuts import render
from django.shortcuts import render, redirect
from django.utils import timezone
from .models import Newsletter, Subscriber
@ -10,5 +8,14 @@ from .models import Newsletter, Subscriber
def newsletters(request):
if request.method == 'POST':
Subscriber.objects.create(email=request.POST.get('email'))
newsletters = Newsletter.objects.filter(Q(publish__lte=timezone.now())).order_by('-publish')
return render(request, 'newsletters.html', {'newsletters': newsletters})
def unsubscribe(request):
if request.method == 'POST':
Subscriber.objects.get(email=request.POST.get('email')).delete()
return redirect('newsletters')
return render(request, 'unsubscribe.html')