users: add additional information why user with pending reviews shouldn't be deleted.
This commit is contained in:
parent
e6113a3d7b
commit
7add053ff8
5 changed files with 34 additions and 7 deletions
|
|
@ -390,13 +390,23 @@ class UsersController(BaseController):
|
|||
|
||||
# Interim workaround if the user participated on any pull requests as a
|
||||
# reviewer.
|
||||
has_review = bool(PullRequestReviewers.query().filter(
|
||||
PullRequestReviewers.user_id == user_id).first())
|
||||
has_review = len(user.reviewer_pull_requests)
|
||||
c.can_delete_user = not has_review
|
||||
c.can_delete_user_message = _(
|
||||
'The user participates as reviewer in pull requests and '
|
||||
'cannot be deleted. You can set the user to '
|
||||
'"inactive" instead of deleting it.') if has_review else ''
|
||||
c.can_delete_user_message = ''
|
||||
inactive_link = h.link_to(
|
||||
'inactive', h.url('edit_user', user_id=user_id, anchor='active'))
|
||||
if has_review == 1:
|
||||
c.can_delete_user_message = h.literal(_(
|
||||
'The user participates as reviewer in {} pull request and '
|
||||
'cannot be deleted. \nYou can set the user to '
|
||||
'"{}" instead of deleting it.').format(
|
||||
has_review, inactive_link))
|
||||
elif has_review:
|
||||
c.can_delete_user_message = h.literal(_(
|
||||
'The user participates as reviewer in {} pull requests and '
|
||||
'cannot be deleted. \nYou can set the user to '
|
||||
'"{}" instead of deleting it.').format(
|
||||
has_review, inactive_link))
|
||||
|
||||
return htmlfill.render(
|
||||
render('admin/users/user_edit.mako'),
|
||||
|
|
|
|||
|
|
@ -605,6 +605,13 @@ class User(Base, BaseModel):
|
|||
# don't allow to set API key this is deprecated for now
|
||||
self._api_key = None
|
||||
|
||||
@property
|
||||
def reviewer_pull_requests(self):
|
||||
return PullRequestReviewers.query() \
|
||||
.options(joinedload(PullRequestReviewers.pull_request)) \
|
||||
.filter(PullRequestReviewers.user_id == self.user_id) \
|
||||
.all()
|
||||
|
||||
@property
|
||||
def firstname(self):
|
||||
# alias for future
|
||||
|
|
|
|||
|
|
@ -285,6 +285,9 @@ input.inline[type="file"] {
|
|||
margin: 0 0 @padding;
|
||||
padding:.5em;
|
||||
background-color: @grey6;
|
||||
&.pre-formatting {
|
||||
white-space: pre;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1805,6 +1808,9 @@ BIN_FILENODE = 7
|
|||
.help-block {
|
||||
margin: @padding 0;
|
||||
color: @text-color;
|
||||
&.pre-formatting {
|
||||
white-space: pre;
|
||||
}
|
||||
}
|
||||
|
||||
.empty_data {
|
||||
|
|
|
|||
|
|
@ -533,6 +533,9 @@ address {
|
|||
margin: 0 0 @padding;
|
||||
color: @grey4;
|
||||
font-family: @text-light;
|
||||
&.pre-formatting {
|
||||
white-space: pre;
|
||||
}
|
||||
}
|
||||
|
||||
.error-message {
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
(_('Repository groups'), len(c.user.repository_groups), '', [x.group_name for x in c.user.repository_groups]),
|
||||
(_('User groups'), len(c.user.user_groups), '', [x.users_group_name for x in c.user.user_groups]),
|
||||
|
||||
(_('Reviewer of pull requests'), len(c.user.reviewer_pull_requests), '', ['Pull Request #{}'.format(x.pull_request.pull_request_id) for x in c.user.reviewer_pull_requests]),
|
||||
(_('Member of User groups'), len(c.user.group_member), '', [x.users_group.users_group_name for x in c.user.group_member]),
|
||||
(_('Force password change'), c.user.user_data.get('force_password_change', 'False'), '', ''),
|
||||
]
|
||||
|
|
@ -142,7 +143,7 @@
|
|||
</button>
|
||||
</div>
|
||||
% if c.can_delete_user_message:
|
||||
<p class="help-block">${c.can_delete_user_message}</p>
|
||||
<p class="help-block pre-formatting">${c.can_delete_user_message}</p>
|
||||
% endif
|
||||
|
||||
<div class="field">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue