# HG changeset patch # User Marcin Kuzminski # Date 2020-02-13 11:55:56 # Node ID dbc50246d325779c1896a3afc5d92d28a09c8680 # Parent 95c3d86784faa791c89ff3ecb4c09ab25151c8bb permissions: added helper to fetch users with write permissions. Used mostly in branch protection logic. diff --git a/rhodecode/model/permission.py b/rhodecode/model/permission.py --- a/rhodecode/model/permission.py +++ b/rhodecode/model/permission.py @@ -21,8 +21,7 @@ """ permissions model for RhodeCode """ - - +import collections import logging import traceback @@ -557,6 +556,27 @@ class PermissionModel(BaseModel): self.sa.rollback() raise + def get_users_with_repo_write(self, db_repo): + write_plus = ['repository.write', 'repository.admin'] + default_user_id = User.get_default_user().user_id + user_write_permissions = collections.OrderedDict() + + # write+ and DEFAULT user for inheritance + for perm in db_repo.permissions(): + if perm.permission in write_plus or perm.user_id == default_user_id: + user_write_permissions[perm.user_id] = perm + return user_write_permissions + + def get_user_groups_with_repo_write(self, db_repo): + write_plus = ['repository.write', 'repository.admin'] + user_group_write_permissions = collections.OrderedDict() + + # write+ and DEFAULT user for inheritance + for p in db_repo.permission_user_groups(): + if p.permission in write_plus: + user_group_write_permissions[p.users_group_id] = p + return user_group_write_permissions + def trigger_permission_flush(self, affected_user_ids): events.trigger(events.UserPermissionsChange(affected_user_ids))