Arbeiten mit der Jira API mit Python

Hallo an alle. Es wurde überlegt, das Herunterladen von Berichten von Jira zu automatisieren. Da Python ein beliebtes Tool war, fiel die Wahl auf ein Modul von JIra, mit dem Sie mit der API arbeiten können. An wen es interessant ist frage ich auf kat.

Bild

Atlassian verfügt über eine offizielle Dokumentation zur Verwendung ihres Moduls. Das Modul selbst heißt "jira". Traditionell werden wir das Modul mit dem Befehl installieren

pip install jira 

Dann importieren wir das Modul direkt in den Code:

 from jira import JIRA 

Um eine Verbindung zum Server selbst herzustellen, müssen Sie einen Client erstellen, indem Sie die erforderlichen Parameter übergeben:

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

Um sich mit einem Passwort zu authentifizieren, können Sie das Passwort anstelle des API-Schlüssels übertragen. Nachdem die Autorisierung übergeben wurde, haben wir einen aktiven API-Client, auf den Sie zugreifen können.

Die Möglichkeiten sind sicherlich nicht unbegrenzt, aber ziemlich breit. Ich musste Aufgaben für eine bestimmte Woche erledigen und einen Bericht über die in Excell verbrachten Stunden erstellen. Sie können Aufgaben direkt vom Projekt selbst, von der Aufgabennummer oder von der JQL-Abfrage erhalten. Suchwerkzeuge sind sehr flexibel und einfach. Alle vom API-Client zurückgegebenen Informationen werden in einer Zeichenfolge geliefert, sodass zusätzliche Schritte erforderlich sind, um damit zu arbeiten.
Wir verfassen eine JQL-Anfrage und übernehmen die Aufgaben:

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

Leider habe ich immer noch nicht verstanden, warum in den Aufgaben, die durch eine solche Anforderung erhalten werden, keine Worklog-Eigenschaft vorhanden ist. Nach einigen Versuchen zu verstehen, was los war, fragte ich Jira höflich nach der Aufgabe nach Nummer:

 issue = jira.issue(issue_key) 

In der von dieser Methode zurückgegebenen Aufgabe war das Arbeitsprotokollfeld mit einer Liste von Arbeitsprotokollen. Infolgedessen fing ich an, Aufgaben per JQL-Abfrage zu übernehmen, zog die Aufgabennummern heraus und zog danach die Informationen heraus, die ich brauchte:

 worklogs = issue.fields.worklog.worklogs 

Mit einer ähnlichen Zeile können Sie alle Zeitdatensätze einer bestimmten Aufgabe abrufen. Jeder Eintrag enthält Zeitinformationen in Sekunden und in Textdarstellung (1h, 3d usw.).
Dann ist alles einfach, nehmen Sie Rückwürfe, die nicht in den Zeitraum passen, in meinem Fall stimmt die Wochennummer nicht überein:

 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: 

Da das Datum in einer Zeichenfolge zurückgegeben wird, habe ich es mit einem einfachen regulären Ausdruck abgerufen und in der nächsten Zeile den erforderlichen Typ angegeben. Mit dem Ausdruck worklog_date.isocalendar () [1] können Sie die Anzahl der Wochen ermitteln, die mit den erforderlichen Werten verglichen werden. Wenn es übereinstimmt, stampfen Sie weiter und schreiben Sie den Rest der Daten.

Im Allgemeinen können Sie mit dem oben genannten Modul eine Vielzahl von Aufgaben lösen, Sie benötigen nur Zeit und Lust.

UPD

Sie können keine Aufgaben erneut anfordern. Erweitern Sie einfach das erforderliche Feld
github.com/pycontribs/jira/blob/master/jira/client.py#L2371
danke HSerg

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


All Articles