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

Python - Gestion des tickets Jira

WBOY
Libérer: 2024-08-28 18:31:36
original
323 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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"
Copier après la connexion

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')
Copier après la connexion

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')
Copier après la connexion

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
Copier après la connexion

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!

source:dev.to
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal