Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion atlassian/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.14.0
1.14.1
4 changes: 3 additions & 1 deletion atlassian/bitbucket.py
Original file line number Diff line number Diff line change
Expand Up @@ -553,7 +553,7 @@ def delete_branch(self, project, repository, name, end_point):
data = {"name": str(name), "endPoint": str(end_point)}
return self.delete(url, data=data)

def get_pull_requests(self, project, repository, state='OPEN', order='newest', limit=100, start=0):
def get_pull_requests(self, project, repository, state='OPEN', order='newest', limit=100, start=0, at=None):
"""
Get pull requests
:param project:
Expand All @@ -576,6 +576,8 @@ def get_pull_requests(self, project, repository, state='OPEN', order='newest', l
params['start'] = start
if order:
params['order'] = order
if at:
params['at'] = at
response = self.get(url, params=params)
if 'values' not in response:
return []
Expand Down
16 changes: 15 additions & 1 deletion atlassian/confluence.py
Original file line number Diff line number Diff line change
Expand Up @@ -1276,7 +1276,7 @@ def team_calendar_events(self, sub_calendar_id, start, end, user_time_zone_id=No
if start:
params['start'] = start
if end:
params['start'] = end
params['end'] = end
return self.get(url, params=params)

def get_mobile_parameters(self, username):
Expand Down Expand Up @@ -1305,3 +1305,17 @@ def avatar_set_default_for_user(self, user_key):
"""
url = 'rest/user-profile/1.0/{}/avatar/default'.format(user_key)
return self.get(url)

def add_user_to_group(self, username, group_name):
"""
Add given user to a group

:param username: str
:param group_name: str
:return: Current state of the group
"""
url = 'rest/api/2/group/user'
params = {'groupname': group_name}
data = {'name': username}

return self.post(url, params=params, data=data)
67 changes: 62 additions & 5 deletions atlassian/jira.py
Original file line number Diff line number Diff line change
Expand Up @@ -1045,7 +1045,7 @@ def set_issue_status_by_transition_id(self, issue_key, transition_id):

def get_issue_status(self, issue_key):
url = 'rest/api/2/issue/{issue_key}?fields=status'.format(issue_key=issue_key)
return (self.get(url) or {}).get('fields').get('status').get('name')
return (((self.get(url) or {}).get('fields') or {}).get('status') or {}).get('name') or {}

def get_issue_status_id(self, issue_key):
url = 'rest/api/2/issue/{issue_key}?fields=status'.format(issue_key=issue_key)
Expand Down Expand Up @@ -1657,6 +1657,17 @@ def tempo_workload_scheme_get_members(self, scheme_id):
url = 'rest/tempo-core/1/workloadscheme/users/{}'.format(scheme_id)
return self.get(url)

def tempo_workload_scheme_set_member(self, scheme_id, member):
"""
Provide a workload scheme members
:param member: user name of user
:param scheme_id:
:return:
"""
url = 'rest/tempo-core/1/workloadscheme/user/{}'.format(member)
data = {'id': scheme_id}
return self.put(url, data=data)

def tempo_timesheets_get_configuration(self):
"""
Provide the configs of timesheets
Expand Down Expand Up @@ -1712,12 +1723,12 @@ def tempo_timesheets_get_worklogs(self, date_from=None, date_to=None, username=N

def tempo_timesheets_write_worklog(self, worker, started, time_spend_in_seconds, issue_id, comment=None):
"""

:param comment:
Log work for user
:param worker:
:param started:
:param time_spend_in_seconds:
:param issue_id:
:param comment:
:return:
"""
data = {"worker": worker,
Expand All @@ -1729,6 +1740,20 @@ def tempo_timesheets_write_worklog(self, worker, started, time_spend_in_seconds,
url = 'rest/tempo-timesheets/4/worklogs/'
return self.post(url, data=data)

def tempo_timesheets_approval_worklog_report(self, user_key, period_start_date):
"""
Return timesheets for approval
:param user_key:
:param period_start_date:
:return:
"""
url = "rest/tempo-timesheets/4/timesheet-approval/current"
params = {}
if period_start_date:
params['periodStartDate'] = period_start_date
if user_key:
params['userKey'] = user_key

def tempo_timesheets_get_required_times(self, from_date, to_date, user_name):
"""
Provide time how much should work
Expand Down Expand Up @@ -1774,19 +1799,51 @@ def tempo_get_default_link_to_project(self, project_id):
url = 'rest/tempo-accounts/1/link/project/{}/default/'.format(project_id)
return self.get(url)

def tempo_teams_get_all_teams(self, expand=None):
url = "rest/tempo-teams/2/team"
params = {}
if expand:
params['expand'] = expand
return self.get(url, params=params)

def tempo_teams_add_member(self, team_id, member_key):
"""
Add team member
:param team_id:
:param member_key:
:return:
"""
url = 'rest/tempo-teams/2/team/{}/member/'.format(team_id)
data = {"member": {"key": member_key, "type": "USER"},
data = {"member": {"key": str(member_key), "type": "USER"},
"membership": {
"availability": "100",
"role": {"id": 1}
}}
return self.tempo_teams_add_member_raw(team_id, member_data=data)

def tempo_teams_add_membership(self, team_id, member_id):
"""
Add team member
:param team_id:
:param member_id:
:return:
"""
data = {"teamMemberId": member_id,
"teamId": team_id,
"availability": "100",
"role": {"id": 1}
}
url = "rest/tempo-teams/2/team/{}/member/{}/membership".format(team_id, member_id)
return self.post(url, data=data)

def tempo_teams_add_member_raw(self, team_id, member_data):
"""
Add team member
:param team_id:
:param member_data:
:return:
"""
url = 'rest/tempo-teams/2/team/{}/member/'.format(team_id)
data = member_data
return self.post(url, data=data)

def tempo_teams_get_members(self, team_id):
Expand Down