Skip to content

Commit ff8ecd9

Browse files
client.py: changed group_members to be compatiable with Jira
1 parent fbdb2bf commit ff8ecd9

File tree

1 file changed

+85
-39
lines changed

1 file changed

+85
-39
lines changed

jira/client.py

Lines changed: 85 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1694,47 +1694,93 @@ def group_members(self, group: str) -> OrderedDict:
16941694
"Group members is not implemented in Jira before version 6.0, upgrade the instance, if possible."
16951695
)
16961696

1697-
params = {"groupname": group, "expand": "users"}
1698-
r = self._get_json("group", params=params)
1699-
size = r["users"]["size"]
1700-
end_index = r["users"]["end-index"]
1701-
1702-
while end_index < size - 1:
1703-
params = {
1704-
"groupname": group,
1705-
"expand": f"users[{end_index + 1}:{end_index + 50}]",
1706-
}
1707-
r2 = self._get_json("group", params=params)
1708-
for user in r2["users"]["items"]:
1709-
r["users"]["items"].append(user)
1710-
end_index = r2["users"]["end-index"]
1697+
if self._version < (10, 0, 0):
1698+
params = {"groupname": group, "expand": "users"}
1699+
r = self._get_json("group", params=params)
17111700
size = r["users"]["size"]
1701+
end_index = r["users"]["end-index"]
1702+
1703+
while end_index < size - 1:
1704+
params = {
1705+
"groupname": group,
1706+
"expand": f"users[{end_index + 1}:{end_index + 50}]",
1707+
}
1708+
r2 = self._get_json("group", params=params)
1709+
for user in r2["users"]["items"]:
1710+
r["users"]["items"].append(user)
1711+
end_index = r2["users"]["end-index"]
1712+
size = r["users"]["size"]
1713+
1714+
result = {}
1715+
for user in r["users"]["items"]:
1716+
# 'id' is likely available only in older JIRA Server,
1717+
# it's not available on newer JIRA Server.
1718+
# 'name' is not available in JIRA Cloud.
1719+
hasId = user.get("id") is not None and user.get("id") != ""
1720+
hasName = user.get("name") is not None and user.get("name") != ""
1721+
result[
1722+
(
1723+
user["id"]
1724+
if hasId
1725+
else user.get("name")
1726+
if hasName
1727+
else user.get("accountId")
1728+
)
1729+
] = {
1730+
"name": user.get("name"),
1731+
"id": user.get("id"),
1732+
"accountId": user.get("accountId"),
1733+
"fullname": user.get("displayName"),
1734+
"email": user.get("emailAddress", "hidden"),
1735+
"active": user.get("active"),
1736+
"timezone": user.get("timezone"),
1737+
}
1738+
return OrderedDict(sorted(result.items(), key=lambda t: t[0]))
1739+
1740+
else:
1741+
params = {"groupname": group}
1742+
group_member_api_endpoint = "group/member"
1743+
r = self._get_json(group_member_api_endpoint, params=params)
1744+
end_index = r["maxResults"]
1745+
isLast = r["isLast"]
1746+
1747+
while isLast is False:
1748+
params = {
1749+
"groupname": group,
1750+
"startAt": f"{end_index}",
1751+
}
1752+
r2 = self._get_json(group_member_api_endpoint, params=params)
1753+
isLast = r2["isLast"]
1754+
for user in r2["values"]:
1755+
r["values"].append(user)
1756+
end_index += r2["maxResults"]
1757+
1758+
result = {}
1759+
for user in r["values"]:
1760+
# 'id' is likely available only in older JIRA Server,
1761+
# it's not available on newer JIRA Server.
1762+
# 'name' is not available in JIRA Cloud.
1763+
hasId = user.get("id") is not None and user.get("id") != ""
1764+
hasName = user.get("name") is not None and user.get("name") != ""
1765+
result[
1766+
(
1767+
user["id"]
1768+
if hasId
1769+
else user.get("name")
1770+
if hasName
1771+
else user.get("accountId")
1772+
)
1773+
] = {
1774+
"name": user.get("name"),
1775+
"id": user.get("id"),
1776+
"accountId": user.get("accountId"),
1777+
"fullname": user.get("displayName"),
1778+
"email": user.get("emailAddress", "hidden"),
1779+
"active": user.get("active"),
1780+
"timezone": user.get("timezone"),
1781+
}
1782+
return OrderedDict(sorted(result.items(), key=lambda t: t[0]))
17121783

1713-
result = {}
1714-
for user in r["users"]["items"]:
1715-
# 'id' is likely available only in older JIRA Server,
1716-
# it's not available on newer JIRA Server.
1717-
# 'name' is not available in JIRA Cloud.
1718-
hasId = user.get("id") is not None and user.get("id") != ""
1719-
hasName = user.get("name") is not None and user.get("name") != ""
1720-
result[
1721-
(
1722-
user["id"]
1723-
if hasId
1724-
else user.get("name")
1725-
if hasName
1726-
else user.get("accountId")
1727-
)
1728-
] = {
1729-
"name": user.get("name"),
1730-
"id": user.get("id"),
1731-
"accountId": user.get("accountId"),
1732-
"fullname": user.get("displayName"),
1733-
"email": user.get("emailAddress", "hidden"),
1734-
"active": user.get("active"),
1735-
"timezone": user.get("timezone"),
1736-
}
1737-
return OrderedDict(sorted(result.items(), key=lambda t: t[0]))
17381784

17391785
def add_group(self, groupname: str) -> bool:
17401786
"""Create a new group in Jira.

0 commit comments

Comments
 (0)