46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
import json
|
|
|
|
from django.conf import settings
|
|
from django.core.mail import EmailMessage
|
|
from django.http import HttpResponse
|
|
from django.shortcuts import render, redirect, get_object_or_404
|
|
|
|
|
|
def render_to_json_response(dictionary, content_type="application/json; charset=utf-8", status=200):
|
|
try:
|
|
response = json.dumps(dictionary, ensure_ascii=False) + '\n'
|
|
except TypeError:
|
|
logger.error('failed to serialize to JSON: %s', dictionary)
|
|
raise
|
|
if not isinstance(response, bytes):
|
|
response = response.encode('utf-8')
|
|
return HttpResponse(response, content_type=content_type, status=status)
|
|
|
|
|
|
def index(request):
|
|
|
|
if request.method == 'POST':
|
|
try:
|
|
data = json.loads(request.body.decode())
|
|
except:
|
|
response = {}
|
|
return render_to_json_response(response)
|
|
|
|
for key in ('email', 'name', 'message'):
|
|
if not data.get(key):
|
|
print(key, 'msising', data)
|
|
return render_to_json_response({})
|
|
|
|
name = data['name']
|
|
email = data['email']
|
|
message = data['message']
|
|
message = "Name: %s\nEmail: %s\n\n%s" % (name, email, message)
|
|
subject = '{} has left a message on brixton-timeline'.format(name)
|
|
from_ = settings.CONTACT_FROM_EMAIL
|
|
to = settings.CONTACT_TO_EMAIL
|
|
if not isinstance(to, list):
|
|
to = [to]
|
|
msg = EmailMessage(subject, message, from_, to, reply_to=[email])
|
|
msg.send(fail_silently=True)
|
|
return render_to_json_response({"sent": True})
|
|
return redirect('/')
|