api: added proper full permission flush on API calls when creating repos and repo groups.
- This allows a full flush and multiple calls made via API
This commit is contained in:
parent
56421dc214
commit
9f13849af9
5 changed files with 10 additions and 13 deletions
|
|
@ -232,6 +232,9 @@ def create_repo_group(
|
|||
user=apiuser)
|
||||
|
||||
Session().commit()
|
||||
|
||||
PermissionModel().trigger_permission_flush()
|
||||
|
||||
return {
|
||||
'msg': 'Created new repo group `%s`' % validated_group_name,
|
||||
'repo_group': repo_group.get_api_data()
|
||||
|
|
|
|||
|
|
@ -349,13 +349,7 @@ class AdminRepoGroupsView(BaseAppView, DataGridAppView):
|
|||
% repo_group_name, category='error')
|
||||
raise HTTPFound(h.route_path('home'))
|
||||
|
||||
affected_user_ids = [self._rhodecode_user.user_id]
|
||||
if copy_permissions:
|
||||
user_group_perms = repo_group.permissions(expand_from_user_groups=True)
|
||||
copy_perms = [perm['user_id'] for perm in user_group_perms]
|
||||
# also include those newly created by copy
|
||||
affected_user_ids.extend(copy_perms)
|
||||
PermissionModel().trigger_permission_flush(affected_user_ids)
|
||||
PermissionModel().trigger_permission_flush()
|
||||
|
||||
raise HTTPFound(
|
||||
h.route_path('repo_group_home',
|
||||
|
|
|
|||
|
|
@ -242,11 +242,7 @@ class AdminReposView(BaseAppView, DataGridAppView):
|
|||
|
||||
repo_name = form_result.get('repo_name_full')
|
||||
|
||||
affected_user_ids = [self._rhodecode_user.user_id]
|
||||
if copy_permissions:
|
||||
# permission flush is done in repo creating
|
||||
pass
|
||||
PermissionModel().trigger_permission_flush(affected_user_ids)
|
||||
PermissionModel().trigger_permission_flush()
|
||||
|
||||
raise HTTPFound(
|
||||
h.route_path('repo_creating', repo_name=repo_name,
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@ class IntegrationTypeBase(object):
|
|||
:param event:
|
||||
:return: bool
|
||||
"""
|
||||
allowed_events = self.settings['events']
|
||||
allowed_events = self.settings.get('events') or []
|
||||
if event.name not in allowed_events:
|
||||
log.debug('event ignored: %r event %s not in allowed set of events %s',
|
||||
event, event.name, allowed_events)
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ from rhodecode.lib import hooks_base
|
|||
from rhodecode.lib.utils2 import safe_int, str2bool, aslist
|
||||
from rhodecode.model.db import (
|
||||
Session, IntegrityError, true, Repository, RepoGroup, User)
|
||||
from rhodecode.model.permission import PermissionModel
|
||||
|
||||
|
||||
@async_task(ignore_result=True, base=RequestContextTask)
|
||||
|
|
@ -216,6 +217,9 @@ def create_repo(form_data, cur_user):
|
|||
repo=audit_logger.RepoWrap(repo_name=repo_name, repo_id=repo_id))
|
||||
|
||||
Session().commit()
|
||||
|
||||
PermissionModel().trigger_permission_flush()
|
||||
|
||||
except Exception as e:
|
||||
log.warning('Exception occurred when creating repository, '
|
||||
'doing cleanup...', exc_info=True)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue