subscribe to digest
This commit is contained in:
parent
743276298d
commit
bee761e0c4
8 changed files with 95 additions and 6 deletions
|
|
@ -1,13 +1,26 @@
|
|||
import json
|
||||
|
||||
from brake.decorators import ratelimit
|
||||
|
||||
from django.conf import settings
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.db.models.functions import ExtractWeek, ExtractYear
|
||||
from django.shortcuts import render
|
||||
from django.shortcuts import redirect, render
|
||||
from django.template.loader import render_to_string
|
||||
from django.utils import timezone
|
||||
from django.utils.timezone import datetime, timedelta
|
||||
|
||||
from django.core.validators import validate_email
|
||||
import django.contrib.auth
|
||||
|
||||
from ..item import models
|
||||
from ..item.views import get_weeks, format_week, get_monday, get_byline
|
||||
from ..item.utils import render_to_json
|
||||
from ..utils import default_context
|
||||
|
||||
from . import utils
|
||||
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
|
||||
def week(year, month, day):
|
||||
|
|
@ -32,3 +45,40 @@ def week(year, month, day):
|
|||
context['week_link'] = settings.URL + '/_' + monday
|
||||
context['items'] = archive_week
|
||||
return render_to_string("weekly_email.html", context)
|
||||
|
||||
|
||||
@ratelimit(method="POST", block=True, rate="5/m")
|
||||
def subscribe(request):
|
||||
context = default_context(request)
|
||||
response = {}
|
||||
request_type = 'json'
|
||||
if request.method == "POST":
|
||||
if "email" in request.POST:
|
||||
data = request.POST
|
||||
request_type = 'html'
|
||||
else:
|
||||
data = json.loads(request.body)
|
||||
if not response:
|
||||
try:
|
||||
validate_email(data["email"])
|
||||
except ValidationError as e:
|
||||
response['error'] = 'please enter a valid email address.'
|
||||
else:
|
||||
try:
|
||||
if utils.is_subscribed(data["email"]):
|
||||
pass
|
||||
elif not utils.add_email(data["email"]):
|
||||
response['error'] = 'failed to add email to weekly digest.'
|
||||
except:
|
||||
response['error'] = 'failed to add your email, please try again later.'
|
||||
|
||||
if request_type == 'html':
|
||||
if 'error' in response:
|
||||
context['error'] = response['error']
|
||||
return render(request, 'subscribe.html', context)
|
||||
else:
|
||||
context["subscribed"] = True
|
||||
return render(request, 'subscribe.html', context)
|
||||
return render_to_json(response)
|
||||
else:
|
||||
return render(request, 'subscribe.html', context)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue