permissions: added helper to fetch users with write permissions. Used mostly in branch protection logic.

This commit is contained in:
Marcin Kuzminski 2020-02-13 12:55:56 +01:00
parent 8c09a544c1
commit d3a18067bd

View file

@ -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))