add command "issue validate"

This commit is contained in:
Benjamin Dauvergne 2022-01-29 09:01:23 +01:00
parent 1e40d313ee
commit cf670cfae3
2 changed files with 36 additions and 1 deletions

7
README
View File

@ -100,6 +100,13 @@ Apply patched atteched to issue 9999.::
git redmine issue apply --issue 9999
issue validate
--------------
Validate the current issue or a target issue (--issue).
git redmine issue validate [--issue 9999]
link
----

View File

@ -75,6 +75,7 @@ def get_redmine_api():
redmine.statuses = {status.name: status for status in redmine.issue_status.all()}
redmine.nouveau = redmine.statuses['Nouveau']
redmine.solution = redmine.statuses['Solution proposée']
redmine.solution_validee = redmine.statuses['Solution validée']
redmine.resolu_a_deployer = redmine.statuses['Résolu (à déployer)']
redmine.developpement = [tr for tr in redmine.tracker.all() if tr.name == 'Développement'][0]
redmine.rustine = [cf for cf in redmine.custom_field.all() if cf.name == 'Rustine proposée'][0]
@ -266,7 +267,7 @@ def take(issue_number, reference):
current_user = api.user.get('current')
if (not hasattr(issue, 'assigned_to') or issue.assigned_to.id != current_user.id) and click.confirm(
'Do you want to assign the issue to yourself ?',
default=not hasattr(issue, 'assigned_to') and issue.status == api.nouveau,
default=not hasattr(issue, 'assigned_to') and issue.status.id == api.nouveau.id,
):
issue.assigned_to_id = current_user.id
issue.save()
@ -282,6 +283,33 @@ def apply(issue):
apply_attachments(repo, issue)
def get_comment(message, default=False):
if not click.confirm(message, default=default):
return
message = '\n' + MARKER
message = click.edit(message)
if message is not None:
message = message.split(MARKER, 1)[0].rstrip('\n')
return message
@issue.command()
@click.option('--issue', default=None, type=int)
def validate(issue):
api = get_redmine_api()
issue = get_issue(issue)
if issue.status.id != api.solution.id:
click.secho('Issue %s has no solution proposed.' % issue.id, fg='red')
return False
comment = get_comment('Do you want to add a coment to your validation?')
kwargs = {}
if comment:
kwargs['notes'] = comment
kwargs['status_id'] = api.solution_validee.id
api.issue.update(issue.id, **kwargs)
@issue.command()
@click.option('--issue', default=None, type=int)
def show(issue):