"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Python - Gestion des tickets Jira

Python - Gestion des tickets Jira

Publié le 2024-11-04
Parcourir:589

Python - Jira ticket management

Bonjour, je viens de découvrir Jira Lib et j'ai décidé de le tester afin de trouver les personnes qui font le plus de tickets.

Code dans mon github : https://github.com/victordalet/Jira_python_test


I-Installation

Il vous suffit de python et d'installer jira lib.

pip install jira

II - Se connecter

Déclarez les 3 variables avec vos informations et rendez-vous sur https://id.atlassian.com/manage-profile/profile-and-visibility en sécurité pour générer votre token (mot de passe).

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

III - Fonctionnement de Lib

Je crée une classe pour obtenir des informations JIRA, qui peut créer une sorte de requête mysql comme la méthode get_tickets pour trouver des ressources ou des tickets, des projets...

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 - Afficher l'activité des utilisateurs

Je parcours le projet pour retrouver tous les tickets et ajouter les bonnes statues à un dictionnaire utilisateur.

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 - Tri et affichage du résultat

Maintenant, je trie les utilisateurs en fonction du nombre de tickets créés et utilisés.

    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')

Résultat :

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
Déclaration de sortie Cet article est reproduit sur : https://dev.to/victordalet/python-jira-ticket-management-1jb7?1 En cas de violation, veuillez contacter [email protected] pour le supprimer
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3