Advertisement
Guest User

Untitled

a guest
Nov 16th, 2018
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.04 KB | None | 0 0
  1.  
  2. from jira import *
  3.  
  4. class Board(object):
  5. def __init__(self, serverUrl, username, password, projectName, boardName):
  6. self.serverUrl = serverUrl
  7. self.username = username
  8. self.password = password
  9. self.projectName = projectName
  10. self.projectKey = ""
  11. self.projectId = ""
  12. self.boardName = boardName
  13. self.allIssues = []
  14. self.allUsers = []
  15. self.freeWorkers = []
  16. self.workers = set()
  17.  
  18. def getAllIssues(self):
  19. for issue in self.jira.search_issues(jql_str="project="+self.projectKey, maxResults=1000):
  20. self.allIssues.append(Issue(issue))
  21. return self.allIssues
  22.  
  23. def getAllProjectUsers(self):
  24. users = board.jira.search_assignable_users_for_projects(username='', projectKeys=[self.projectKey])
  25. for user in users:
  26. self.allUsers.append(user.displayName)
  27. return self.allUsers
  28.  
  29. def getWorkers(self):
  30. self.getAllIssues()
  31. for issue in self.allIssues:
  32. if issue.status != "Done" and issue.assigneeName != None:
  33. self.workers.add(Worker(issue).name)
  34.  
  35. self.workers = list(self.workers)
  36. return self.workers
  37.  
  38. def createNewIssue(self, summary, description, issueType, assigneeName):
  39. newIssue = {
  40. 'project': {'id': self.projectId},
  41. 'summary': summary,
  42. 'description': description,
  43. 'issuetype': {'name': issueType},
  44. 'assignee': {'name': assigneeName}
  45. }
  46. self.jira.create_issue(fields=newIssue)
  47.  
  48.  
  49. def connectToBoard(self):
  50. options = {'server': self.serverUrl}
  51. authData = (self.username, self.password)
  52. self.jira = JIRA(server=self.serverUrl, options=options, auth=authData)
  53. for project in self.jira.projects():
  54. if project.name == self.projectName:
  55. self.projectKey = project.key
  56. self.projectId = project.id
  57.  
  58.  
  59. def checkBoard(self):
  60. options = {'server': self.serverUrl}
  61. authData = (self.username, self.password)
  62. try:
  63. self.jira = JIRA(server=self.serverUrl, options=options, auth=authData)
  64. except Exception as e:
  65. print(e)
  66. print("Failed to connect to board")
  67. return False
  68. return True
  69.  
  70. def checkProject(self):
  71. options = {'server': self.serverUrl}
  72. authData = (self.username, self.password)
  73. jira = JIRA(server=self.serverUrl, options=options, auth=authData)
  74. print(jira.projects()[0].name)
  75. projects = jira.projects()
  76. projects_count = len(projects)
  77. isProjectFinded = False
  78. if projects_count > 0:
  79. for project in jira.projects():
  80. if self.projectName == project.name:
  81. isProjectFinded = True
  82. break
  83. else:
  84. print("Projects count == 0")
  85. return False
  86. if isProjectFinded:
  87. return True
  88. else:
  89. print("Failed to find project!")
  90. return False
  91.  
  92.  
  93. def checkServer(self):
  94. try:
  95. JIRA(server=self.serverUrl)
  96. except Exception as e:
  97. print(e)
  98. print("Failed to connect to server")
  99. return False
  100. return True
  101.  
  102. class Issue(object):
  103. def __init__(self, issue):
  104. self.issue = issue
  105. self.raw_value = issue.raw
  106. self.id = issue.raw['id']
  107. self.link = issue.raw['self']
  108. self.key = issue.raw['key']
  109. self.typeName = issue.raw['fields']['issuetype']['name']
  110. self.typeSubtask = issue.raw['fields']['issuetype']['subtask']
  111. self.timespent = issue.raw['fields']['timespent']
  112. self.projectId = issue.raw['fields']['project']['id']
  113. self.projectName = issue.raw['fields']['project']['name']
  114. self.projectKey = issue.raw['fields']['project']['key']
  115. self.workRatio = issue.raw['fields']['workratio']
  116. self.labels = issue.raw['fields']['labels']
  117. self.status = issue.raw['fields']['status']['statusCategory']['name']
  118. self.description = issue.raw['fields']['description']
  119. self.summary = issue.raw['fields']['summary']
  120. self.creatorName = issue.raw['fields']['creator']['name']
  121. self.creatorKey = issue.raw['fields']['creator']['key']
  122. self.creatorAccountId = issue.raw['fields']['creator']['accountId']
  123. self.creatorDisplayName = issue.raw['fields']['creator']['displayName']
  124. self.progress = issue.raw['fields']['progress']['progress']
  125. self.progressTotal = issue.raw['fields']['progress']['total']
  126. self.timeEstimate = issue.raw['fields']['timeestimate']
  127. self.assignee = issue.raw['fields']['assignee']
  128. if issue.raw['fields']['assignee'] != None:
  129. self.assigneeName = issue.raw['fields']['assignee']['displayName']
  130. self.assigneeKey = issue.raw['fields']['assignee']['key']
  131. self.assigneeAccountId = issue.raw['fields']['assignee']['accountId']
  132. else:
  133. self.assigneeName = None
  134. self.assigneeKey = None
  135. self.assigneeAccountId = None
  136.  
  137. #TODO
  138. # def setParams(self, board, issueId, summary, description):#, assigneeKey, labels):
  139. # issue = board.jira.issue(issueId)
  140. # issue.fields.summary = summary
  141. # issue.fields.description = description
  142. # # new_issue.fields.assignee.key = assigneeKey
  143. # issue.update()
  144.  
  145.  
  146. class Worker(object):
  147. def __init__(self, issue):
  148. self.name = issue.assigneeName
  149. self.key = issue.assigneeKey
  150. self.accountId = issue.assigneeAccountId
  151.  
  152.  
  153. if __name__ == "__main__":
  154. board = Board('https://megatm.atlassian.net', 'mega.7eam@gmail.com', 'satxon-7tinfu-piTpiz', 'MegaTeam', 'MEGAT board')
  155. board.connectToBoard()
  156.  
  157. allUsers = board.getAllProjectUsers()
  158. workers = board.getWorkers()
  159. for worker in workers:
  160. print(worker)
  161.  
  162. for user in allUsers:
  163. if user not in workers:
  164. board.freeWorkers.append(user)
  165.  
  166. print()
  167.  
  168. for user in board.freeWorkers:
  169. print(user)
  170. # board.getAllProjectUsers()
  171. # print(board.allUsers)
  172.  
  173. # print(board.allIssues[0].raw_value)
  174.  
  175. # board.createNewIssue(summary="New issue3", description="Some description", issueType="Story", assigneeName="dogn2000")
  176. # board.findAllIssues()
  177. # print(Issue(board.jira.issue('MEGAT-1')).assigneeName)
  178. # print(Issue(board.jira.issue('MEGAT-4')).progress)
  179. # print(Issue(board.jira.issue('MEGAT-4')).progressTotal)
  180.  
  181. # issues = board.findAllIssues()
  182. # for issue in issues:
  183. # print(str(issue.summary) + ':' + str(issue.assigneeName))
  184.  
  185. #Find all issues example
  186. # board.findAllIssues()
  187. # for issue in board.issues:
  188. # print("Key: " + str(issue.key))
  189. # print("Summary: " + str(issue.summary))
  190. # print("Description: " + str(issue.description))
  191. # print("")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement