def create_issue(self, project, type='bug', summary="", description="", priority="minor", parent=None, assignee="", reporter="", labels=[], components={}, **extras): issue = { "project": project.upper(), "summary": summary, "description": description, "priority": self.get_priorities()[priority.lower()]["id"], "assignee": assignee, "reporter": reporter, "components": [{ "name": k, "id": components[k] } for k in components] } if not issue["components"]: issue.pop("components") if type.lower() == 'epic': issue['customfield_11401'] = summary try: if parent: issue['type'] = self.get_subtask_issue_types()[ type.lower()]['id'], created_issue = soap_recursive_dict( self.service.createIssueWithParent(self.token, issue, parent)) else: issue['type'] = self.get_issue_types()[type.lower()]['id'], created_issue = soap_recursive_dict( self.service.createIssue(self.token, issue)) if assignee or reporter or labels: if assignee: created_issue = self.assign_issue(created_issue['key'], assignee) if reporter: created_issue = self.change_reporter( created_issue['key'], reporter) if labels: created_issue = self.add_labels(created_issue['key'], labels) return soap_recursive_dict(created_issue) else: return created_issue except WebFault as e: raise JiraCliError(e)
def search_issues(self, free_text, project=None, limit=100): if not project: return [ soap_recursive_dict(k) for k in self.service.getIssuesFromTextSearch( self.token, free_text) ] else: return [ soap_recursive_dict(k) for k in self.service.getIssuesFromTextSearchWithProject( self.token, [project], free_text, limit) ]
def get_versions(self, issue): project_key = issue.split("-")[0] versions = [ soap_recursive_dict(k) for k in self.service.getVersions(self.token, project_key) ] return dict((item['name'], item) for item in versions)
def get_issues_by_filter(self, *filters): issues = [] for filter in filters: try: fid = self.get_filters()[filter]["id"] issues.extend(self.service.getIssuesFromFilter( self.token, fid)) except KeyError: raise UsageError("filter %s not found" % filter) return [soap_recursive_dict(k) for k in issues]
def get_resolutions(self): resolutions = [ soap_recursive_dict(k) for k in self.service.getResolutions(self.token) ] return dict((item['name'], item) for item in resolutions)
def get_issue(self, issue_id): try: return soap_recursive_dict( self.service.getIssue(self.token, issue_id)) except WebFault: return None
def get_subtask_issue_types(self): issue_types = self.service.getSubTaskIssueTypes(self.token) issue_types = [soap_recursive_dict(k) for k in issue_types] return dict((item['name'].lower(), item) for item in issue_types)
def get_children(self, issue_id): return [ soap_recursive_dict(item) for item in self.service.getSubTasks(self.token, issue_id) ]
def get_statuses(self): statuses = [ soap_recursive_dict(k) for k in self.service.getStatuses(self.token) ] return dict((item['name'].lower(), item) for item in statuses)
def list_versions(self, project): return [ soap_recursive_dict(k) for k in self.service.getVersions(self.token, project) ]
def get_components(self, project): return [ soap_recursive_dict(k) for k in self.service.getComponents(self.token, project) ]
def get_projects(self): return [ soap_recursive_dict(k) for k in self.service.getProjectsNoSchemes(self.token) ]
def get_priorities(self): priorities = [ soap_recursive_dict(k) for k in self.service.getPriorities(self.token) ] return dict((item["name"].lower(), item) for item in priorities)
def get_filters(self): filters = self.service.getSavedFilters(self.token) filters += self.service.getFavouriteFilters(self.token) return dict((item["name"].lower(), soap_recursive_dict(item)) for item in filters)
def get_available_transitions(self, issue): transitions = self.service.getAvailableActions(self.token, issue) if not transitions: raise JiraCliError("No transitions found for issue %s" % issue) return dict( (k.name.lower(), soap_recursive_dict(k)) for k in transitions)
def search_issues_jql(self, query, limit=100): return [ soap_recursive_dict(k) for k in self.service.getIssuesFromJqlSearch( self.token, query, limit) ]
def get_issue_comments(self, issue): return [ soap_recursive_dict(k) for k in self.service.getComments(self.token, issue) ]