Skip to content

Commit

Permalink
client.py: changed group_members to be compatiable with Jira
Browse files Browse the repository at this point in the history
  • Loading branch information
marcin-wozniak-wttech committed Feb 21, 2025
1 parent fbdb2bf commit 8ff6176
Showing 1 changed file with 85 additions and 39 deletions.
124 changes: 85 additions & 39 deletions jira/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -1694,47 +1694,93 @@ def group_members(self, group: str) -> OrderedDict:
"Group members is not implemented in Jira before version 6.0, upgrade the instance, if possible."
)

params = {"groupname": group, "expand": "users"}
r = self._get_json("group", params=params)
size = r["users"]["size"]
end_index = r["users"]["end-index"]

while end_index < size - 1:
params = {
"groupname": group,
"expand": f"users[{end_index + 1}:{end_index + 50}]",
}
r2 = self._get_json("group", params=params)
for user in r2["users"]["items"]:
r["users"]["items"].append(user)
end_index = r2["users"]["end-index"]
if self._version < (10, 0, 0):
params = {"groupname": group, "expand": "users"}
r = self._get_json("group", params=params)
size = r["users"]["size"]
end_index = r["users"]["end-index"]

while end_index < size - 1:
params = {
"groupname": group,
"expand": f"users[{end_index + 1}:{end_index + 50}]",
}
r2 = self._get_json("group", params=params)
for user in r2["users"]["items"]:
r["users"]["items"].append(user)
end_index = r2["users"]["end-index"]
size = r["users"]["size"]

result = {}
for user in r["users"]["items"]:
# 'id' is likely available only in older JIRA Server,
# it's not available on newer JIRA Server.
# 'name' is not available in JIRA Cloud.
hasId = user.get("id") is not None and user.get("id") != ""
hasName = user.get("name") is not None and user.get("name") != ""
result[
(
user["id"]
if hasId
else user.get("name")
if hasName
else user.get("accountId")
)
] = {
"name": user.get("name"),
"id": user.get("id"),
"accountId": user.get("accountId"),
"fullname": user.get("displayName"),
"email": user.get("emailAddress", "hidden"),
"active": user.get("active"),
"timezone": user.get("timezone"),
}
return OrderedDict(sorted(result.items(), key=lambda t: t[0]))

else:
params = {"groupname": group}
group_member_api_endpoint = "group/member"
r = self._get_json(group_member_api_endpoint, params=params)
end_index = r["maxResults"]
isLast = r["isLast"]

while isLast is False:
params = {
"groupname": group,
"startAt": f"{end_index}",
}
r2 = self._get_json(group_member_api_endpoint, params=params)
isLast = r2["isLast"]
for user in r2["values"]:
r["values"].append(user)
end_index += r2["maxResults"]

result = {}
for user in r["values"]:
# 'id' is likely available only in older JIRA Server,
# it's not available on newer JIRA Server.
# 'name' is not available in JIRA Cloud.
hasId = user.get("id") is not None and user.get("id") != ""
hasName = user.get("name") is not None and user.get("name") != ""
result[
(
user["id"]
if hasId
else user.get("name")
if hasName
else user.get("accountId")
)
] = {
"name": user.get("name"),
"id": user.get("id"),
"accountId": user.get("accountId"),
"fullname": user.get("displayName"),
"email": user.get("emailAddress", "hidden"),
"active": user.get("active"),
"timezone": user.get("timezone"),
}
return OrderedDict(sorted(result.items(), key=lambda t: t[0]))

result = {}
for user in r["users"]["items"]:
# 'id' is likely available only in older JIRA Server,
# it's not available on newer JIRA Server.
# 'name' is not available in JIRA Cloud.
hasId = user.get("id") is not None and user.get("id") != ""
hasName = user.get("name") is not None and user.get("name") != ""
result[
(
user["id"]
if hasId
else user.get("name")
if hasName
else user.get("accountId")
)
] = {
"name": user.get("name"),
"id": user.get("id"),
"accountId": user.get("accountId"),
"fullname": user.get("displayName"),
"email": user.get("emailAddress", "hidden"),
"active": user.get("active"),
"timezone": user.get("timezone"),
}
return OrderedDict(sorted(result.items(), key=lambda t: t[0]))

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

0 comments on commit 8ff6176

Please sign in to comment.