branch-permissions: handle cases for revoking regular permissions when branch permissions are set:

- DB cascade delete fliushing branch when repository is deleted
- forbid lowering permissions if it's used for branch
This commit is contained in:
Marcin Kuzminski 2018-08-30 00:47:01 +02:00
parent fb99ae6dec
commit eb911610bd
2 changed files with 6 additions and 5 deletions

View file

@ -3079,6 +3079,7 @@ class UserGroupRepoToPerm(Base, BaseModel):
users_group = relationship('UserGroup')
permission = relationship('Permission')
repository = relationship('Repository')
user_group_branch_perms = relationship('UserGroupToRepoBranchPermission', cascade='all')
@classmethod
def create(cls, users_group, repository, permission):

View file

@ -73,9 +73,10 @@
</td>
</tr>
%else:
<% used_by_n_rules = len(getattr(_user, 'branch_rules', None) or []) %>
<tr>
<td class="td-radio">${h.radio('u_perm_%s' % _user.user_id,'repository.none', checked=_user.permission=='repository.none')}</td>
<td class="td-radio">${h.radio('u_perm_%s' % _user.user_id,'repository.read', checked=_user.permission=='repository.read')}</td>
<td class="td-radio">${h.radio('u_perm_%s' % _user.user_id,'repository.none', checked=_user.permission=='repository.none', disabled="disabled" if (used_by_n_rules and _user.username != h.DEFAULT_USER) else None)}</td>
<td class="td-radio">${h.radio('u_perm_%s' % _user.user_id,'repository.read', checked=_user.permission=='repository.read', disabled="disabled" if (used_by_n_rules and _user.username != h.DEFAULT_USER) else None)}</td>
<td class="td-radio">${h.radio('u_perm_%s' % _user.user_id,'repository.write', checked=_user.permission=='repository.write')}</td>
<td class="td-radio">${h.radio('u_perm_%s' % _user.user_id,'repository.admin', checked=_user.permission=='repository.admin')}</td>
<td class="td-user">
@ -89,11 +90,10 @@
(${_('inactive duplicate')})
%endif
%if getattr(_user, 'branch_rules', None):
<% used_by_n_rules = len(_user.branch_rules) %>
% if used_by_n_rules == 1:
(${_('used by {} branch rule').format(used_by_n_rules)})
(${_('used by {} branch rule, requires write+ permissions').format(used_by_n_rules)})
% else:
(${_('used by {} branch rules').format(used_by_n_rules)})
(${_('used by {} branch rules, requires write+ permissions').format(used_by_n_rules)})
% endif
%endif
% endif