class AutoSprinter: def __init__(self): self.__server = os.getenv("SERVER") self.__username = os.getenv("JIRA_USER") self.__password = os.getenv("JIRA_PASS") self._options = None self._auth = None self._jira = None self._board_id = os.getenv("JIRA_BOARD_ID") self._sprints = [] self.init_jira() def init_jira(self): if not self.__server: self.__server = raw_input("Enter JIRA server url: \n") if not self.__username or not self.__password: self.__username = raw_input("Enter JIRA username: "******"server": self.__server} self._auth = (self.__username, self.__password) self._jira = JIRA(self._options, basic_auth=self._auth) if not self._board_id: pprint.pprint(self._jira.boards()) self._board_id = raw_input("Enter Board Id: ") def _create_sprint(self): current_date = datetime.datetime.now() end_date = (current_date + datetime.timedelta(days=7)) new_sprint_name = current_date.strftime("%d %B, %Y") start_date = current_date.strftime("%d/%b/%y %I:%M %p") end_date = end_date.strftime("%d/%b/%y %I:%M %p") return self._jira.create_sprint(new_sprint_name, self._board_id, startDate=start_date, endDate=end_date) def sprints_update(self): self._sprints = self._jira.sprints(self._board_id) for sprint in self._sprints: if sprint.state == 'ACTIVE': future_sprint = self._create_sprint()
return unicodedata.normalize('NFKD', u).encode('ascii', 'ignore') if __name__ == '__main__': config = json.load(open('config.json')) options = dict(server=config['server']) auth = dict(access_token=config['access_token'], access_token_secret=config['access_token_secret'], consumer_key=config['consumer_key'], key_cert=read('private_key.pem')) if len(sys.argv) == 1: print(USAGE) exit(1) jira = JIRA(options=options, oauth=auth) if sys.argv[1] == 'boards': for board in jira.boards(): print('{:<5} {}'.format(board.id, board.name)) elif sys.argv[1] == 'sprints': board_id = int(sys.argv[2]) for sprint in jira.sprints(board_id, extended=True): dates = '' if sprint.state != 'future': dates = '{:%Y-%m-%d/%H:%M} -> {:%Y-%m-%d/%H:%M}'.format(parse(sprint.startDate), parse(sprint.endDate)) print('{} {:36} {}'.format(sprint.state, dates, sprint.name)) for issue in jira.search_issues('Sprint={} ORDER BY key'.format(sprint.id)): print(' * {:6} {:11} {}'.format(issue.key, issue.fields.status, normalize(issue.fields.summary))) print('')
# issues = jira.search_issues('assignee='+username) # print(issues) ticketName = str(input("Enter the ticket name: ")) issue = jira.issue(ticketName) while executionFlag: command = str( input( "Enter option for following task: \n 1. Get a story into current sprint \n 2. Move Story \n 3. Update Story Points \n 4. Read Story's Description & comments \n 5. Add work log to ticket \n 6. Assign Ticket To Me \n 7. Create sub-task of this ticket \n" )) if command == "1": boards = jira.boards() # print('boards ', boards) sprints = jira.sprints(board_id) # for sprint in sprints: # print('%s: %s ' % (sprint.id, sprint.name)) sprintId = int(sprints[-1].id) issueId = str(issue.id) issueIdList = list() issueIdList.append(issueId) # print(issue.id) # print("issue key ", issueIdList) jira.assign_issue(issue.id, username) jira.add_issues_to_sprint(sprintId, issueIdList) storyPoints = int(input("Enter story points: ")) issue.update(fields={'customfield_10021': storyPoints}) # --> Story Points