From cf670cfae3ad61b4618e4407dfa825389d102f6a Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Sat, 29 Jan 2022 09:01:23 +0100 Subject: [PATCH] add command "issue validate" --- README | 7 +++++++ git_redmine.py | 30 +++++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/README b/README index d9deca7..5b8d2e5 100644 --- a/README +++ b/README @@ -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 ---- diff --git a/git_redmine.py b/git_redmine.py index a92a61c..b9511c7 100644 --- a/git_redmine.py +++ b/git_redmine.py @@ -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):