# HG changeset patch # User Marcin Kuzminski # Date 2020-05-11 14:30:30 # Node ID b3a3408eb1c582e8bcabb12e2695343ba02ccf85 # Parent 99cc102ea223dafb635329f9297952234cc58aeb permissions: fixed problem with permissions changes from permission page diff --git a/rhodecode/apps/repository/views/repo_permissions.py b/rhodecode/apps/repository/views/repo_permissions.py --- a/rhodecode/apps/repository/views/repo_permissions.py +++ b/rhodecode/apps/repository/views/repo_permissions.py @@ -114,21 +114,26 @@ class RepoSettingsPermissionsView(RepoAp private_flag = str2bool(self.request.POST.get('private')) try: - RepoModel().update( - self.db_repo, **{'repo_private': private_flag, 'repo_name': self.db_repo_name}) + repo = RepoModel().get(self.db_repo.repo_id) + repo.private = private_flag + Session().add(repo) + RepoModel().grant_user_permission( + repo=self.db_repo, user=User.DEFAULT_USER, perm='repository.none' + ) + Session().commit() h.flash(_('Repository `{}` private mode set successfully').format(self.db_repo_name), category='success') + # NOTE(dan): we change repo private mode we need to notify all USERS + affected_user_ids = User.get_all_user_ids() + PermissionModel().trigger_permission_flush(affected_user_ids) + except Exception: log.exception("Exception during update of repository") h.flash(_('Error occurred during update of repository {}').format( self.db_repo_name), category='error') - # NOTE(dan): we change repo private mode we need to notify all USERS - affected_user_ids = User.get_all_user_ids() - PermissionModel().trigger_permission_flush(affected_user_ids) - return { 'redirect_url': h.route_path('edit_repo_perms', repo_name=self.db_repo_name), 'private': private_flag diff --git a/rhodecode/templates/admin/repos/repo_edit_permissions.mako b/rhodecode/templates/admin/repos/repo_edit_permissions.mako --- a/rhodecode/templates/admin/repos/repo_edit_permissions.mako +++ b/rhodecode/templates/admin/repos/repo_edit_permissions.mako @@ -59,7 +59,7 @@ ${base.gravatar(h.DEFAULT_USER_EMAIL, 16)} ${h.DEFAULT_USER} - ${_('only users/user groups explicitly added here will have access')} - + ${_('un-set private mode')} @@ -115,7 +115,7 @@ ${_('Remove')} %elif _user.username == h.DEFAULT_USER: - + ${_('set private mode')} %endif @@ -213,7 +213,14 @@ }); quick_repo_menu(); - var setPrivateRepo = function (private) { + var setPrivateRepo = function (elem, private) { + var $elem = $(elem) + if ($elem.hasClass('disabled')) { + return + } + $elem.addClass('disabled'); + $elem.css({"opacity": 0.3}) + var postData = { 'csrf_token': CSRF_TOKEN, 'private': private