Advertisement
jezzye13

Jira Tool v1.0.2

Jun 17th, 2022 (edited)
512
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.81 KB | None | 0 0
  1. import requests
  2. import xlsxwriter
  3.  
  4. name_and_version = "Jira Tool v1.0.2"
  5. print(name_and_version)
  6.  
  7. # Personal Access Tokens
  8. auth_token='XXX'
  9.  
  10. def calculate_remaining_student_number(student_number):
  11.     url = f"https://jira.buas.nl/rest/api/latest/search?jql=assignee = \"{student_number}@buas.nl\" AND resolution = Unresolved AND type in (Sub-task, Task, Bug) AND sprint in openSprints()"
  12.     hed = {'Authorization': 'Bearer ' + auth_token}
  13.  
  14.     response = requests.get(url, headers=hed)
  15.     response_json = response.json()
  16.  
  17.     # check if there are issues found
  18.     if len(response_json["issues"]) == 0:
  19.         print("No matching issues found.")
  20.         return -1
  21.  
  22.     sum_remaining_time = 0
  23.  
  24.     for issue in response_json["issues"]:
  25.  
  26.         timeoriginalestimate = -1
  27.         try:
  28.             timeoriginalestimate = int(issue["fields"]["timeoriginalestimate"])
  29.         except Exception:
  30.             timeoriginalestimate = 0
  31.  
  32.         timespent = -1
  33.         try:
  34.             timespent = int(issue["fields"]["timespent"])
  35.         except Exception:
  36.             timespent = 0
  37.  
  38.         sum_remaining_time += timeoriginalestimate - timespent
  39.  
  40.         key = issue["key"]
  41.         print(f"{key} timeoriginalestimate is {timeoriginalestimate} - timespent is {timespent} remaining is {timeoriginalestimate - timespent}")
  42.  
  43.     if sum_remaining_time < 0:
  44.         sum_remaining_time = 0
  45.  
  46.     display_name = student_number_to_display_name(student_number)
  47.     print(f"Sum of remaining time for user {display_name} is {sum_remaining_time}.")
  48.     return sum_remaining_time
  49.  
  50. def student_number_to_display_name(student_number):
  51.     url = f"http://jira.buas.nl/rest/api/2/user?username={student_number}@buas.nl"
  52.     hed = {'Authorization': 'Bearer ' + auth_token}
  53.  
  54.     response = requests.get(url, headers=hed)
  55.     response_json = response.json()
  56.     return response_json["displayName"]
  57.  
  58. # Init workbook
  59. workbook = xlsxwriter.Workbook('jira_tool.xlsx')
  60. worksheet = workbook.add_worksheet(name_and_version)
  61.  
  62. # Studentnumbers order
  63. studentnumbers = open('studentnumbers.txt', 'r')
  64. studentnumbers_lines = studentnumbers.readlines()
  65. studentnumbers.close()
  66.  
  67. # Header
  68. worksheet.set_column('A:A', 50)
  69. worksheet.set_column('B:B', 20)
  70. worksheet.set_column('C:C', 20)
  71. worksheet.write(0, 0, "student name")
  72. worksheet.write(0, 1, "student number")
  73. worksheet.write(0, 2, "remaining hours")
  74.  
  75. # Writing
  76. col = 1
  77. for line in studentnumbers_lines:
  78.     studentnumber = line.strip()
  79.     value = calculate_remaining_student_number(studentnumber)
  80.  
  81.     if value > 0:
  82.         value = value / 3600
  83.  
  84.     display_name = student_number_to_display_name(studentnumber)
  85.     worksheet.write(col, 0, display_name)
  86.     worksheet.write(col, 1, studentnumber)
  87.     worksheet.write(col, 2, value)
  88.     col+=1
  89.  
  90. workbook.close()
  91. print("Done!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement