Maison  >  Article  >  développement back-end  >  Python - Gestion des tickets Jira

Python - Gestion des tickets Jira

WBOY
WBOYoriginal
2024-08-28 18:31:36195parcourir

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 = "" # me@name.fr
JIRA_PASSWORD = "" # token

III - Fonctionnement de Lib

Je crée une classe pour récupérer les 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 selon le 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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn