diff --git a/transporte/models.py b/transporte/models.py index 6d26ca1ff851c1baccf02eaa0335e841209c6bdb..c42d4c48518d089512514f775048b5abf9647cd2 100644 --- a/transporte/models.py +++ b/transporte/models.py @@ -9,6 +9,8 @@ from flask_mail import Message from itsdangerous import URLSafeTimedSerializer as Serializer from itsdangerous import BadSignature, SignatureExpired +from DNS.Base import TimeoutError as DNSTimeoutError + class User(UserMixin, db.Model): id = db.Column(db.Integer, primary_key=True) @@ -25,13 +27,18 @@ class User(UserMixin, db.Model): Markup('<b>DEBUG:</b> <a href={url}>{url}</a>'.format( url=url_for('login_with_token', token=token, _external=True))), 'warning') - return + return token # send login email msg = Message('Ohai!', recipients=[self.login]) msg.body = 'Here is your login link: {}'.format(url_for('login_with_token', token=token, _external=True)) - mail.send(msg) + try: + mail.send(msg) + except DNSTimeoutError: + return None + + return token @staticmethod def verify_login_token(token): diff --git a/transporte/views.py b/transporte/views.py index 0198b2c0a6cc083d39398cf43d3a3b2863764481..4ef34c9d7a47825cd3a857959a1b1c46b2aca461 100644 --- a/transporte/views.py +++ b/transporte/views.py @@ -67,9 +67,11 @@ def login(): db.session.commit() # create token - user.create_token() - - flash('Check your inbox!') + token = user.create_token() + if token is not None: + flash('Check your inbox!') + else: + loginform.login.errors.append('Error creating token!') else: loginform.login.errors.append('Please enter valid email address!')