Catch SMTP errors

This commit is contained in:
Yohan Boniface 2019-05-25 19:16:46 +02:00
parent b3062fd385
commit c410a4558f

View file

@ -141,6 +141,7 @@ async def sesame(request, response):
async def send_sesame(request, response, unprotected=True): async def send_sesame(request, response, unprotected=True):
email = request.form.get("email") email = request.form.get("email")
token = utils.create_token(email) token = utils.create_token(email)
try:
emails.send_from_template( emails.send_from_template(
env, env,
"access_granted", "access_granted",
@ -149,6 +150,9 @@ async def send_sesame(request, response, unprotected=True):
hostname=request.host, hostname=request.host,
token=token.decode(), token=token.decode(),
) )
except RuntimeError:
response.message("Oops, impossible d'envoyer le courriel…", status="error")
else:
response.message(f"Un sésame vous a été envoyé à l'adresse '{email}'") response.message(f"Un sésame vous a été envoyé à l'adresse '{email}'")
response.redirect = "/" response.redirect = "/"
@ -339,10 +343,20 @@ async def place_order(request, response, id):
delivery.persist() delivery.persist()
if user and user.email == email: if user and user.email == email:
# Only send email if order has been placed by the user itself. # Only send email if order has been placed by the user itself.
try:
emails.send_order( emails.send_order(
request, env, person=Person(email=email), delivery=delivery, order=order request,
env,
person=Person(email=email),
delivery=delivery,
order=order,
)
except RuntimeError:
response.message("Impossible d'envoyer le courriel…", status="error")
else:
response.message(
f"La commande pour «{email}» a bien été prise en compte!"
) )
response.message(f"La commande pour «{email}» a bien été prise en compte!")
response.redirect = f"/livraison/{delivery.id}" response.redirect = f"/livraison/{delivery.id}"
else: else:
order = delivery.orders.get(email) or Order() order = delivery.orders.get(email) or Order()
@ -364,9 +378,13 @@ async def send_order(request, response, id):
if not order: if not order:
response.message(f"Aucune commande pour «{email}»", status="warning") response.message(f"Aucune commande pour «{email}»", status="warning")
else: else:
try:
emails.send_order( emails.send_order(
request, env, person=Person(email=email), delivery=delivery, order=order request, env, person=Person(email=email), delivery=delivery, order=order
) )
except RuntimeError:
response.message("Oops, impossible d'envoyer le courriel…", status="error")
else:
response.message(f"Résumé de commande envoyé à «{email}»") response.message(f"Résumé de commande envoyé à «{email}»")
response.redirect = f"/livraison/{delivery.id}" response.redirect = f"/livraison/{delivery.id}"