From c624df9478c560fffc94c33005c669d78e36873a Mon Sep 17 00:00:00 2001 From: Kevin Chung Date: Sat, 26 Aug 2017 13:45:24 -0400 Subject: [PATCH] Handle when database is cleared without adding an additional teams lookup (#368) --- CTFd/utils.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/CTFd/utils.py b/CTFd/utils.py index 07f68556..a9b856ff 100644 --- a/CTFd/utils.py +++ b/CTFd/utils.py @@ -26,6 +26,7 @@ from flask_caching import Cache from flask_migrate import Migrate, upgrade as migrate_upgrade, stamp as migrate_stamp from itsdangerous import TimedSerializer, BadTimeSignature, Signer, BadSignature from six.moves.urllib.parse import urlparse, urljoin, quote, unquote +from sqlalchemy.exc import InvalidRequestError, IntegrityError from werkzeug.utils import secure_filename from CTFd.models import db, WrongKeys, Pages, Config, Tracking, Teams, Files, ip2long, long2ip @@ -128,10 +129,16 @@ def init_utils(app): if not track: visit = Tracking(ip=get_ip(), team=session['id']) db.session.add(visit) - db.session.commit() else: track.date = datetime.datetime.utcnow() + + try: db.session.commit() + except (InvalidRequestError, IntegrityError) as e: + print(e.message) + db.session.rollback() + session.clear() + db.session.close() @app.before_request