Handle when database is cleared without adding an additional teams lookup (#368)

This commit is contained in:
Kevin Chung
2017-08-26 13:45:24 -04:00
committed by GitHub
parent 00c68dd239
commit c624df9478

View File

@@ -26,6 +26,7 @@ from flask_caching import Cache
from flask_migrate import Migrate, upgrade as migrate_upgrade, stamp as migrate_stamp from flask_migrate import Migrate, upgrade as migrate_upgrade, stamp as migrate_stamp
from itsdangerous import TimedSerializer, BadTimeSignature, Signer, BadSignature from itsdangerous import TimedSerializer, BadTimeSignature, Signer, BadSignature
from six.moves.urllib.parse import urlparse, urljoin, quote, unquote from six.moves.urllib.parse import urlparse, urljoin, quote, unquote
from sqlalchemy.exc import InvalidRequestError, IntegrityError
from werkzeug.utils import secure_filename from werkzeug.utils import secure_filename
from CTFd.models import db, WrongKeys, Pages, Config, Tracking, Teams, Files, ip2long, long2ip from CTFd.models import db, WrongKeys, Pages, Config, Tracking, Teams, Files, ip2long, long2ip
@@ -128,10 +129,16 @@ def init_utils(app):
if not track: if not track:
visit = Tracking(ip=get_ip(), team=session['id']) visit = Tracking(ip=get_ip(), team=session['id'])
db.session.add(visit) db.session.add(visit)
db.session.commit()
else: else:
track.date = datetime.datetime.utcnow() track.date = datetime.datetime.utcnow()
try:
db.session.commit() db.session.commit()
except (InvalidRequestError, IntegrityError) as e:
print(e.message)
db.session.rollback()
session.clear()
db.session.close() db.session.close()
@app.before_request @app.before_request