Trabalhando com a API Jira com Python

Olá pessoal. Houve um pensamento para automatizar o download de relatórios do Jira. Como o Python era uma ferramenta favorita, a escolha recaiu sobre um módulo do JIra, permitindo que você trabalhasse com a API deles. Para quem é interessante, pergunto no kat.

imagem

Atlassian tem documentação oficial sobre o uso de seu módulo. O próprio módulo é chamado "jira". Por tradição, instalaremos o módulo com o comando:

pip install jira 

Em seguida, importamos o módulo diretamente no código:

 from jira import JIRA 

Para conectar-se ao servidor, você precisa criar um cliente passando os parâmetros necessários para ele:

 jira_options = {'server': 'https://project-name.atlassian.net'} jira = JIRA(options=jira_options, basic_auth=(login, api_key)) 

Para se autenticar com uma senha, você pode transferir a senha em vez da chave api. Após a aprovação da autorização, temos um cliente API ativo que você pode acessar.

As possibilidades certamente não são ilimitadas, mas bastante amplas. Eu precisava executar tarefas para uma semana específica e compilar um relatório sobre as horas gastas no Excell. Você pode obter tarefas diretamente pelo próprio projeto, pelo número da tarefa ou pela consulta JQL. As ferramentas de pesquisa são bastante flexíveis e simples. Todas as informações retornadas pelo cliente api são fornecidas em sequência, portanto, etapas adicionais são necessárias para trabalhar com ele.
Nós compomos uma solicitação jql e selecionamos as tarefas nela:

 jql = 'project = ' + project_key + ' AND worklogDate >= ' + work_date issues_list = jira.search_issues(jql) 

Infelizmente, ainda não entendi por que não há propriedade do log de trabalho nessas tarefas que são obtidas por meio de uma solicitação. Depois de algumas tentativas de entender o que havia de errado, pedi educadamente a jira a tarefa pelo número:

 issue = jira.issue(issue_key) 

Na tarefa retornada por esse método, o campo do log de trabalho com uma lista de logs de trabalho era. Como resultado, comecei a executar tarefas por consulta jql, retirei os números das tarefas e depois extraímos as informações necessárias:

 worklogs = issue.fields.worklog.worklogs 

Uma linha semelhante permite extrair todos os registros de tempo de uma tarefa específica. Cada entrada possui informações de tempo em segundos e em representação textual (1h, 3d etc.).
Então tudo é simples, faça devoluções que não se encaixam no período, no meu caso o número da semana não corresponde:

 worklog_date_str = re.search(r'(\d{4}-\d{2}-\d{2})', worklog.started) worklog_date = datetime.strptime(worklog_date_str.group(0), '%Y-%m-%d') if worklog_date.isocalendar()[1] == weak_number: 

Como a data é retornada em uma string, usei uma expressão regular simples para buscá-la e, na próxima linha, cito o tipo necessário. A expressão worklog_date.isocalendar () [1] permite descobrir o número da semana, que será comparado com o que precisa ser tomado. Se corresponder, continue e escreva o restante dos dados.

Em geral, o módulo acima permite resolver uma ampla variedade de tarefas, você só precisa de tempo e vontade.

UPD

Você não pode solicitar tarefas novamente, basta expandir o campo obrigatório
github.com/pycontribs/jira/blob/master/jira/client.py#L2371
obrigado HSerg

Source: https://habr.com/ru/post/pt442078/


All Articles