54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
from smtplib import SMTPException
|
|
|
|
from anymail.exceptions import AnymailRequestsAPIError
|
|
from django.conf import settings
|
|
from django.core.mail import EmailMessage
|
|
from django.http import JsonResponse
|
|
from django.shortcuts import get_object_or_404
|
|
from django.utils.decorators import method_decorator
|
|
from django.views import generic
|
|
from django.views.decorators.csrf import ensure_csrf_cookie
|
|
|
|
from pictures.models import Message
|
|
|
|
|
|
class MessageListView(generic.ListView):
|
|
model = Message
|
|
template_name = "pictures/messages-list.html"
|
|
context_object_name = "messages"
|
|
|
|
|
|
@method_decorator(ensure_csrf_cookie, name="dispatch")
|
|
class MessageDetailView(generic.DetailView):
|
|
model = Message
|
|
template_name = "pictures/messages-detail.html"
|
|
context_object_name = "message"
|
|
|
|
|
|
def send_email(request, pk):
|
|
message = get_object_or_404(Message, pk=pk)
|
|
all_media = message.media_files.all()
|
|
media_count = len(all_media)
|
|
if media_count > 1:
|
|
subject = "Vos photos"
|
|
else:
|
|
subject = "Votre photo"
|
|
message_text = (
|
|
message.content
|
|
+ "\n\n-- \nEnvoyé depuis votre cadre photo, par Claire & Gabriel"
|
|
)
|
|
|
|
try:
|
|
email = EmailMessage(
|
|
subject,
|
|
message_text,
|
|
from_email=None,
|
|
to=[settings.EMAIL_RECIPIENT],
|
|
)
|
|
for media in all_media:
|
|
email.attach_file(media.file.path)
|
|
email.send(fail_silently=False)
|
|
except (SMTPException, AnymailRequestsAPIError) as e:
|
|
return JsonResponse({"status": "error", "message": str(e)}, status=500)
|
|
return JsonResponse({"status": "ok"}, status=200)
|