Remove unnecessary calls to the database for user and permission metadata.
This commit is contained in:
parent
13298be5d3
commit
959016a6eb
5 changed files with 58 additions and 39 deletions
|
@ -8,30 +8,37 @@ from flask.ext.principal import identity_changed, Identity, AnonymousIdentity
|
|||
|
||||
from data import model
|
||||
from app import app, login_manager, mixpanel
|
||||
from auth.permissions import QuayDeferredPermissionUser
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class _LoginWrappedDBUser(UserMixin):
|
||||
def __init__(self, db_user):
|
||||
self.db_user = db_user
|
||||
def __init__(self, db_username):
|
||||
|
||||
self._db_username = db_username
|
||||
self._db_user = None
|
||||
|
||||
def db_user(self):
|
||||
if not self._db_user:
|
||||
self._db_user = model.get_user(self._db_username)
|
||||
return self._db_user
|
||||
|
||||
def is_authenticated(self):
|
||||
return self.db_user() is not None
|
||||
|
||||
def is_active(self):
|
||||
return self.db_user.verified
|
||||
return self.db_user().verified
|
||||
|
||||
def get_id(self):
|
||||
return unicode(self.db_user.username)
|
||||
return unicode(self._db_username)
|
||||
|
||||
|
||||
@login_manager.user_loader
|
||||
def load_user(username):
|
||||
logger.debug('Loading user: %s' % username)
|
||||
db_user = model.get_user(username)
|
||||
if db_user:
|
||||
return _LoginWrappedDBUser(db_user)
|
||||
else:
|
||||
return None
|
||||
return _LoginWrappedDBUser(username)
|
||||
|
||||
|
||||
@app.route('/', methods=['GET'], defaults={'path': ''})
|
||||
|
@ -78,8 +85,8 @@ def privacy():
|
|||
def common_login(db_user):
|
||||
if login_user(_LoginWrappedDBUser(db_user)):
|
||||
logger.debug('Successfully signed in as: %s' % db_user.username)
|
||||
identity_changed.send(app,
|
||||
identity=Identity(db_user.username, 'username'))
|
||||
new_identity = QuayDeferredPermissionUser(db_user.username, 'username')
|
||||
identity_changed.send(app, identity=new_identity)
|
||||
return True
|
||||
else:
|
||||
logger.debug('User could not be logged in, inactive?.')
|
||||
|
|
Reference in a new issue