Skip to content

Commit 780eb30

Browse files
authored
Merge pull request #1 from Telefonica/jchernandez/fix-group-members
chore: working with properly endpoint for current Jira v10.3.7 version
2 parents 2ace2e9 + c7978fd commit 780eb30

File tree

1 file changed

+40
-16
lines changed

1 file changed

+40
-16
lines changed

jira/client.py

Lines changed: 40 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1743,29 +1743,53 @@ def group_members(self, group: str) -> OrderedDict:
17431743
Args:
17441744
group (str): Name of the group.
17451745
"""
1746+
users = {}
1747+
17461748
if self._version < (6, 0, 0):
17471749
raise NotImplementedError(
1748-
"Group members is not implemented in Jira before version 6.0, upgrade the instance, if possible."
1750+
"Group members is not implemented in Jira before version 6.0,"
1751+
" upgrade the instance, if possible."
17491752
)
17501753

1751-
params = {"groupname": group, "expand": "users"}
1752-
r = self._get_json("group", params=params)
1753-
size = r["users"]["size"]
1754-
end_index = r["users"]["end-index"]
1755-
1756-
while end_index < size - 1:
1757-
params = {
1758-
"groupname": group,
1759-
"expand": f"users[{end_index + 1}:{end_index + 50}]",
1760-
}
1761-
r2 = self._get_json("group", params=params)
1762-
for user in r2["users"]["items"]:
1763-
r["users"]["items"].append(user)
1764-
end_index = r2["users"]["end-index"]
1754+
elif self._version < (10, 0, 0):
1755+
params = {"groupname": group, "expand": "users"}
1756+
r = self._get_json("group", params=params)
17651757
size = r["users"]["size"]
1758+
end_index = r["users"]["end-index"]
1759+
1760+
while end_index < size - 1:
1761+
params = {
1762+
"groupname": group,
1763+
"expand": f"users[{end_index + 1}:{end_index + 50}]",
1764+
}
1765+
r2 = self._get_json("group", params=params)
1766+
for user in r2["users"]["items"]:
1767+
r["users"]["items"].append(user)
1768+
end_index = r2["users"]["end-index"]
1769+
size = r["users"]["size"]
1770+
users = r["users"]["items"]
1771+
else:
1772+
params = {"groupname": group}
1773+
group_member_api_endpoint = "group/member"
1774+
r = self._get_json(group_member_api_endpoint, params=params)
1775+
end_index = r["maxResults"]
1776+
is_last = r["isLast"]
1777+
1778+
while is_last is False:
1779+
params = {
1780+
"groupname": group,
1781+
"startAt": f"{end_index}",
1782+
}
1783+
r2 = self._get_json(group_member_api_endpoint, params=params)
1784+
is_last = r2["isLast"]
1785+
for user in r2["values"]:
1786+
r["values"].append(user)
1787+
end_index += r2["maxResults"]
1788+
1789+
users = r["values"]
17661790

17671791
result = {}
1768-
for user in r["users"]["items"]:
1792+
for user in users:
17691793
# 'id' is likely available only in older JIRA Server,
17701794
# it's not available on newer JIRA Server.
17711795
# 'name' is not available in JIRA Cloud.

0 commit comments

Comments
 (0)