示例#1
0
def status(jira, args):
    m = re.match(r'(\w+-\d+) (.*)', args)

    if not m:
        return utils.not_valid_args(args)

    issue_key = m.group(1)
    issue_status = m.group(2)

    try:
        issue = jira.issue(issue_key)
        statuses = jira.statuses()

        if issue_status not in [s.name for s in statuses]:
            return utils.error('Status {} does not exist'.format(issue_status))

        if issue_status == issue.fields.status.name:
            return utils.error('Status {} already set'.format(issue_status))

        transitions = jira.transitions(issue)
        transition_id = utils.get_transition(transitions, issue_status)

        if not transition_id:
            return utils.error('Operation not permitted')

        jira.transition_issue(issue, transition_id)
        issue = jira.issue(issue_key)

        return utils.issue_info(issue)
    except JIRAError as e:
        response = utils.error('{} {}'.format(str(e.status_code), str(e.text)))
        return response
示例#2
0
def close(jira, args):
    m = re.match(r'(\w+-\d+) ?(.*)', args)

    if not m:
        return utils.not_valid_args(args)

    issue_key = m.group(1)
    issue_status = 'Closed'
    comment = m.group(2)

    try:
        issue = jira.issue(issue_key)

        transitions = jira.transitions(issue)
        transition_id = utils.get_transition(transitions, issue_status)

        if issue_status == issue.fields.status.name:
            return utils.error('Issue already closed')

        if not transition_id:
            return utils.error('Operation not permitted')

        jira.transition_issue(issue, transition_id, comment=comment)
        issue = jira.issue(issue_key)

        return utils.issue_info(issue)
    except JIRAError as e:
        if e.status_code == 500:
            return utils.error('operation not permitted')

        response = utils.error('{} {}'.format(str(e.status_code), str(e.text)))
        return response