FIX: chyba pri odeslani mailu chycena, logovana

This commit is contained in:
Jarmil 2019-12-09 12:23:03 +01:00
parent 52abbb54eb
commit 63d8af6031
2 changed files with 23 additions and 21 deletions

View File

@ -22,6 +22,16 @@ logger = logging.getLogger(__name__)
USER_MODEL = get_user_model() USER_MODEL = get_user_model()
def send_mail_safe(subject, message, from_email, recipient_list):
""" Posle mail. Vyskytne-li se pri odesilani chyba, vypise ji do logu. Vrati uspesnost. """
try:
send_mail(subject, message, from_email, recipient_list)
except Exception as e:
logger.error("send_mail failed with error: %s" % str(e))
return False
return True
class EmailTokenAuthBackend: class EmailTokenAuthBackend:
""" """
Provides authorization via email workflow. Provides authorization via email workflow.
@ -113,7 +123,6 @@ def sendLoginToken(user):
user.etStamp = datetime.now() user.etStamp = datetime.now()
user.save() user.save()
emailSubj = 'Piráti - nalodění - přihlašovací odkaz'
emailBody = """\ emailBody = """\
Dobrý den, Dobrý den,
@ -128,16 +137,15 @@ S pozdravem
Piráti Piráti
""" """
send_mail( send_mail_safe(
emailSubj, 'Piráti - nalodění - přihlašovací odkaz',
emailBody.format( emailBody.format(
emailToken=emailToken, emailToken=emailToken,
baseUrl=appSettings.BASE_URL), baseUrl=appSettings.BASE_URL),
"nalodeni@pirati.cz", "nalodeni@pirati.cz",
[user.email], # email to ... [user.email]
fail_silently=False,
) )
def sendRegisterToken(f_email): def sendRegisterToken(f_email):
""" """
@ -186,7 +194,6 @@ def sendRegisterTokenReg(rt):
if appSettings.TOKEN_VALID_SEC <= 60*60*24*1: if appSettings.TOKEN_VALID_SEC <= 60*60*24*1:
word_days = "den" word_days = "den"
emailSubj = 'Piráti - nalodění - registrační odkaz'
emailBody = """\ emailBody = """\
Vítej na palubě! Vítej na palubě!
@ -201,18 +208,17 @@ S pozdravem
Piráti Piráti
""" """
send_mail( send_mail_safe(
emailSubj, 'Piráti - nalodění - registrační odkaz',
emailBody.format( emailBody.format(
emailToken=emailToken, emailToken=emailToken,
baseUrl=appSettings.BASE_URL, baseUrl=appSettings.BASE_URL,
days=int(math.floor(appSettings.TOKEN_VALID_SEC / (60*60*24))), days=int(math.floor(appSettings.TOKEN_VALID_SEC / (60*60*24))),
word=word_days), word=word_days),
"nalodeni@pirati.cz", "nalodeni@pirati.cz",
[rt.email], # email to ... [rt.email]
fail_silently=False,
) )
def sendEmailContactVerificationToken(user): def sendEmailContactVerificationToken(user):
""" Send validation email to user.email_contact. """ """ Send validation email to user.email_contact. """
@ -238,7 +244,6 @@ def sendEmailContactVerificationToken(user):
sha256hash.update(ecw.encode('utf-8')) sha256hash.update(ecw.encode('utf-8'))
emailToken = sha256hash.hexdigest() emailToken = sha256hash.hexdigest()
emailSubj = 'Piráti - nalodění - ověření kontaktního emailu'
emailBody = """\ emailBody = """\
Dobrý den, Dobrý den,
@ -256,19 +261,17 @@ S pozdravem
Piráti Piráti
""" """
send_mail( send_mail_safe(
emailSubj, 'Piráti - nalodění - ověření kontaktního emailu',
emailBody.format( emailBody.format(
email_contact = ecw, email_contact = ecw,
emailToken=emailToken, emailToken=emailToken,
baseUrl=appSettings.BASE_URL), baseUrl=appSettings.BASE_URL),
"nalodeni@pirati.cz", "nalodeni@pirati.cz",
[ecw], # email to ... [ecw]
fail_silently=False,
) )
return True return True
#TODO:: osetreni transakci (pro pripad utoku typu DDoS) #TODO:: osetreni transakci (pro pripad utoku typu DDoS)

View File

@ -29,7 +29,6 @@ from django.db.models import F
from django.core.validators import validate_email from django.core.validators import validate_email
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.core.mail import send_mail
from django.core.cache import cache from django.core.cache import cache
import logging import logging
@ -572,10 +571,10 @@ def souhlas(request):
request.user.dc_stamp = None request.user.dc_stamp = None
request.user.dc_undo_stamp = datetime.now() request.user.dc_undo_stamp = datetime.now()
messages.info(request, "Odvolal/a jste souhlas se zpracováním osobních údajů.") messages.info(request, "Odvolal/a jste souhlas se zpracováním osobních údajů.")
send_mail( nalodeni_auth.send_mail_safe(
"Nalodeni: %s odvolal souhlas se zpracovanim osobnich udaju" % request.user.email, "Nalodeni: %s odvolal souhlas se zpracovanim osobnich udaju" % request.user.email,
"Stalo se tak {mydate}".format(mydate=request.user.dc_undo_stamp), "Stalo se tak {mydate}".format(mydate=request.user.dc_undo_stamp),
"nalodeni@pirati.cz", [appSettings.EMAIL_RECIPIENT_GDPR], "nalodeni@pirati.cz", [appSettings.EMAIL_RECIPIENT_GDPR]
) )
request.user.save() request.user.save()