users: replaced extraction of user_ids with more efficient method.

- by default it extracts only active accounts.
This commit is contained in:
Daniel Dourvaris 2020-01-10 16:29:01 +01:00
parent 6858bf047f
commit 67d823a464
3 changed files with 14 additions and 3 deletions

View file

@ -101,7 +101,7 @@ class RepoGroupPermissionsView(RepoGroupAppView):
affected_user_ids = None
if changes.get('default_user_changed', False):
# if we change the default user, we need to flush everyone permissions
affected_user_ids = [x.user_id for x in User.get_all()]
affected_user_ids = User.get_all_user_ids()
PermissionModel().flush_user_permission_caches(
changes, affected_user_ids=affected_user_ids)

View file

@ -94,7 +94,7 @@ class RepoSettingsPermissionsView(RepoAppView):
affected_user_ids = None
if changes.get('default_user_changed', False):
# if we change the default user, we need to flush everyone permissions
affected_user_ids = [x.user_id for x in User.get_all()]
affected_user_ids = User.get_all_user_ids()
PermissionModel().flush_user_permission_caches(
changes, affected_user_ids=affected_user_ids)
@ -126,7 +126,7 @@ class RepoSettingsPermissionsView(RepoAppView):
self.db_repo_name), category='error')
# NOTE(dan): we change repo private mode we need to notify all USERS
affected_user_ids = [x.user_id for x in User.get_all()]
affected_user_ids = User.get_all_user_ids()
PermissionModel().trigger_permission_flush(affected_user_ids)
return {

View file

@ -1024,6 +1024,17 @@ class User(Base, BaseModel):
qry = qry.filter(User.active == true())
return qry.all()
@classmethod
def get_all_user_ids(cls, only_active=True):
"""
Returns all users IDs
"""
qry = Session().query(User.user_id)
if only_active:
qry = qry.filter(User.active == true())
return [x.user_id for x in qry]
@classmethod
def get_default_user(cls, cache=False, refresh=False):
user = User.get_by_username(User.DEFAULT_USER, cache=cache)