Coverage for chalicelib/core/issue_tracking/jira_cloud_issue.py: 20%

41 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-10 12:56 +0000

1from chalicelib.utils import jira_client 

2from chalicelib.core.issue_tracking.base_issue import BaseIntegrationIssue 

3 

4 

5class JIRACloudIntegrationIssue(BaseIntegrationIssue): 

6 def __init__(self, token, username, url): 

7 self.username = username 

8 self.url = url 

9 self._client = jira_client.JiraManager(self.url, self.username, token, None) 

10 super(JIRACloudIntegrationIssue, self).__init__("JIRA", token) 

11 

12 def create_new_assignment(self, project_id, title, description, assignee, issue_type): 

13 self._client.set_jira_project_id(project_id) 

14 data = { 

15 'summary': title, 

16 'description': description, 

17 'issuetype': {'id': issue_type}, 

18 'assignee': {"id": assignee}, 

19 "labels": ["OpenReplay"] 

20 } 

21 return self._client.create_issue(data) 

22 

23 def get_by_ids(self, saved_issues): 

24 projects_map = {} 

25 for i in saved_issues: 

26 if i["integrationProjectId"] not in projects_map.keys(): 

27 projects_map[i["integrationProjectId"]] = [] 

28 projects_map[i["integrationProjectId"]].append(i["id"]) 

29 

30 results = [] 

31 for project_id in projects_map: 

32 self._client.set_jira_project_id(project_id) 

33 jql = 'labels = OpenReplay' 

34 if len(projects_map[project_id]) > 0: 

35 jql += f" AND ID IN ({','.join(projects_map[project_id])})" 

36 issues = self._client.get_issues(jql, offset=0) 

37 results += issues 

38 return {"issues": results} 

39 

40 def get(self, project_id, assignment_id): 

41 self._client.set_jira_project_id(project_id) 

42 return self._client.get_issue_v3(assignment_id) 

43 

44 def comment(self, project_id, assignment_id, comment): 

45 self._client.set_jira_project_id(project_id) 

46 return self._client.add_comment_v3(assignment_id, comment) 

47 

48 def get_metas(self, project_id): 

49 meta = {} 

50 self._client.set_jira_project_id(project_id) 

51 meta['issueTypes'] = self._client.get_issue_types() 

52 meta['users'] = self._client.get_assignable_users() 

53 return {"provider": self.provider.lower(), **meta} 

54 

55 def get_projects(self): 

56 return self._client.get_projects()