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
Il vous suffit de python et d'installer jira lib.
pip install jira
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
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"
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')
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
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