Hola a todos Se pensó en automatizar la descarga de informes de Jira. Dado que Python era una herramienta favorita, la elección recayó en un módulo de JIra que le permite trabajar con su API. Para quién es interesante, le pregunto sobre kat.

Atlassian tiene
documentación oficial sobre el uso de su módulo. El módulo en sí se llama "jira". Por tradición, instalaremos el módulo con el comando:
pip install jira
Luego importamos el módulo directamente en el código:
from jira import JIRA
Para conectarse al servidor en sí, debe crear un cliente pasándole los parámetros necesarios:
jira_options = {'server': 'https://project-name.atlassian.net'} jira = JIRA(options=jira_options, basic_auth=(login, api_key))
Para autenticarse con una contraseña, puede transferir la contraseña en lugar de la clave de API. Una vez aprobada la autorización, tenemos un cliente de API activo al que puede acceder.
Las posibilidades ciertamente no son ilimitadas, sino bastante amplias. Necesitaba sacar tareas para una semana específica y compilar un informe sobre las horas que pasé en Excell. Puede obtener tareas directamente por el proyecto en sí, por número de tarea o por consulta JQL. Las herramientas de búsqueda son bastante flexibles y simples. Toda la información devuelta por el cliente api viene en cadena, por lo que se requieren pasos adicionales para trabajar con ella.
Redactamos una solicitud jql y recogemos las tareas que contiene:
jql = 'project = ' + project_key + ' AND worklogDate >= ' + work_date issues_list = jira.search_issues(jql)
Desafortunadamente, todavía no entendía por qué en esas tareas que se obtienen a través de una solicitud de este tipo no hay propiedad de registro de trabajo. Después de algunos intentos de comprender lo que estaba mal, cortésmente le pedí a jira la tarea por número:
issue = jira.issue(issue_key)
En la tarea devuelta por este método, el campo de registro de trabajo con una lista de registros de trabajo era. Como resultado, comencé a tomar tareas por consulta jql, saqué los números de tarea y luego saqué la información que necesitaba:
worklogs = issue.fields.worklog.worklogs
Una línea similar le permite extraer todos los registros de tiempo de una tarea específica. Cada entrada tiene información de tiempo en segundos y en representación textual (1h, 3d, etc.).
Entonces todo es simple, tome los descartes que no se ajustan al período, en mi caso el número de semana no coincide:
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 la fecha se devuelve en una cadena, utilicé una expresión regular simple para recogerla, y en la siguiente línea cito el tipo necesario. La expresión worklog_date.isocalendar () [1] le permite averiguar el número de la semana, que se comparará con lo que debe tomarse. Si coincide, pise y escriba el resto de los datos.
En general, el módulo anterior le permite resolver una amplia gama de tareas, solo necesita tiempo y ganas.
UPD
No puede volver a solicitar tareas, solo expanda el campo requerido
github.com/pycontribs/jira/blob/master/jira/client.py#L2371gracias
HSerg