Skip to content

Instantly share code, notes, and snippets.

@RiccardoBiosas
Created April 7, 2023 14:10
Show Gist options
  • Save RiccardoBiosas/b13987d55802f624b39f2a5c13ee9bd1 to your computer and use it in GitHub Desktop.
Save RiccardoBiosas/b13987d55802f624b39f2a5c13ee9bd1 to your computer and use it in GitHub Desktop.
Jira SDK Wrapper
from __future__ import annotations
from jira import JIRA
import os
from dotenv import load_dotenv
class JiraClient:
def __init__(self):
load_dotenv()
self.jira_server_url = os.environ.get('JIRA_SERVER_URL')
self.jira_username = os.environ.get('JIRA_USERNAME')
self.jira_api_token = os.environ.get('JIRA_API_TOKEN')
self.jira = self.connect_to_jira()
def connect_to_jira(self):
options = {
'server': self.jira_server_url
}
jira = JIRA(
options=options,
basic_auth=(self.jira_username, self.jira_api_token), # Jira Cloud: a username/token tuple
)
auth_jira = jira.myself()
return jira
def get_project_keys(self):
self.jira.myself()
projects = self.jira.projects()
return [project.key for project in projects]
def get_issues_for_team(self, team_name):
teams = self.jira.teams()
team_id = None
for team in teams:
if team.name == team_name:
team_id = team.id
break
if not team_id:
print('Team not found.')
return []
return self.jira.search_issues(f'team="{team_id}"')
def get_assignable_users_for_projects(self, project_keys, username=""):
max_results = 50
return self.jira.search_assignable_users_for_projects(username=username, projectKeys=project_keys, maxResults=max_results)
def get_users(self, username="@"):
return self.jira.search_users(query=username, maxResults=100)
if __name__ == '__main__':
jira_client = JiraClient()
# print(jira_client.get_project_keys())
# print(jira_client.get_assignable_users_for_projects('KSUX'))
# print(jira_client.get_users())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment