users: add additional information why user with pending reviews shouldn't be deleted.

This commit is contained in:
Daniel Dourvaris 2017-07-13 22:40:12 +02:00
parent e6113a3d7b
commit 7add053ff8
5 changed files with 34 additions and 7 deletions

View file

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

View file

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

View file

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

View file

@ -533,6 +533,9 @@ address {
margin: 0 0 @padding;
color: @grey4;
font-family: @text-light;
&.pre-formatting {
white-space: pre;
}
}
.error-message {

View file

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