„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Python – Jira-Ticketverwaltung

Python – Jira-Ticketverwaltung

Veröffentlicht am 04.11.2024
Durchsuche:705

Python - Jira ticket management

Hallo, ich habe gerade Jira Lib entdeckt und beschlossen, es zu testen, um die Leute zu finden, die die meisten Tickets machen.

Code in meinem Github: https://github.com/victordalet/Jira_python_test


I - Installation

Sie müssen lediglich Python verwenden und die Jira-Bibliothek installieren.

pip install jira

II – Anmelden

Deklarieren Sie die 3 Variablen mit Ihren Informationen und gehen Sie im Sicherheitsbereich zu https://id.atlassian.com/manage-profile/profile-and-visibility, um Ihr Token (Passwort) zu generieren.

JIRA_URL = "" # https://name.alassian.net
JIRA_USER = "" # [email protected]
JIRA_PASSWORD = "" # token

III – Lib-Funktion

Ich erstelle eine Klasse zum Abrufen von JIRA-Informationen, die eine Art MySQL-Abfrage wie die Methode get_tickets erstellen kann, um Ressourcen oder Tickets, Projekte ... zu finden.

class TicketManager:
    def __init__(self):
        self.jira = JIRA(JIRA_URL, basic_auth=(JIRA_USER, JIRA_PASSWORD))

    def get_projects(self):
        return self.jira.projects()

    def get_tickets(self, project_key: str):
        return self.jira.search_issues(f'project="{project_key}"')

    @staticmethod
    def ticket_status(ticket_):
        return ticket_.fields.status

    @staticmethod
    def ticket_reporter(ticket_):
        try:
            return ticket_.fields.reporter
        except AttributeError:
            return "Unknown"

    @staticmethod
    def ticket_assignee(ticket_):
        try:
            return ticket_.fields.assignee
        except AttributeError:
            return "Unknown"

IV – Benutzeraktivität anzeigen

Ich durchsuche das Projekt, um alle Tickets zu finden und füge die richtigen Statuen einem Benutzerwörterbuch hinzu.

if __name__ == '__main__':
    ticket_manager = TicketManager()
    projects = ticket_manager.get_projects()
    user = {}
    nb_total_tickets = 0
    for project in projects:
        tickets = ticket_manager.get_tickets(project.key)
        nb_total_tickets  = len(tickets)
        for ticket in tickets:
            reporter = ticket_manager.ticket_reporter(ticket)
            assignee = ticket_manager.ticket_assignee(ticket)
            if assignee not in user:
                user[assignee] = {'ticket_to_do': 0, 'ticket_reported': 0}
            if reporter not in user:
                user[reporter] = {'ticket_to_do': 0, 'ticket_reported': 0}
            user[assignee]['ticket_to_do']  = 1
            user[reporter]['ticket_reported']  = 1

    print(f'There are {nb_total_tickets} tickets in total')

V - Ergebnis sortieren und anzeigen

Jetzt sortiere ich Benutzer nach der Anzahl der erstellten und verwendeten Tickets.

    user = dict(sorted(user.items(), key=lambda x: (x[1]['ticket_to_do'], x[1]['ticket_reported']), reverse=True))

    for name, value in user.items():
        print(f'{name} : {value["ticket_to_do"]} tickets to do, {value["ticket_reported"]} tickets reported')

Ergebnis :

J.M. : 90 tickets to do, 60 tickets reported
L.M : 75 tickets to do, 21 tickets reported
J.M : 57 tickets to do, 76 tickets reported
V.M : 50 tickets to do, 0 tickets reported
Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/victordalet/python-jira-ticket-management-1jb7?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3